js算法:冒泡排序和选择排序
常规的数组排序算法,用于数字类型的一维数组排序。做个记录,代码如下:
/**
* 冒泡排序法
*/
const bubble = function(data){
let runIndex = 0; // 当前对比的索引
while(runIndex < data.length){ // 进入循环,直到最后一位
data.map((item, index) => { // 遍历源数据,对比当前位和下一位的大小
if(item > data[index + 1]){ // 如果当前位大于下一位,则互换位置
data[index] = data[index + 1];
data[index + 1] = item;
}
})
runIndex++;
}
return data;
}
/**
* 选择排序法
*/
const selector = function(data){
let run = true; // 是否继续循环
let minNumberIndex = 0; // 默认最小数的索引
let result = []; // 存储结果的数组
while(run){ // 进入循环,直到 run = false
data.map((item, index) => { // 遍历源数据,找出当前数组内的最小数
if(item < data[minNumberIndex]) minNumberIndex = index;
})
result.push(data[minNumberIndex]); // 向结果集中添加最小数
data.splice(minNumberIndex, 1); // 在源数据中移除最小数,进入下一次循环
if(data.length == 0) run = false; // 如果源数据的长度为0,终止循环,排序完成
}
return result;
}