选择排序
- 分出有序区R[1,2,…i]和无序区R[i+1,i+2…n]
- 每一趟排序都要从无序区选出一个最小值放在有序区,使无序区减一有序区加一
- 重复1-2步骤n-1次
let testArr = [1, 67, 3, 6, 9, 45, 78,22,111,56];
function selectionSort( array ){
let len = array.length, temp;
if (len <= 1){
return array;
}else{
for (let i = 0; i < len - 1; i++){
let min = array[i];
for (let j = i + 1; j < len; j++){
if (array[j] < min){
temp = min;
min = array[j];
array[j] = temp;
}
}
array[i] = min;
}
return array;
}
}
let resArr = selectionSort(testArr);
console.log(resArr);
结果: [1, 3, 6, 9, 22, 45, 56, 67, 78, 111]
冒泡排序
- 比较相邻元素,判断大小是否进行交换位置
- 对每一对相邻元素做同样的工作,从开始到结束
- 对所有元素进行1-2步骤重复操作
- 重复步骤1-3,直到排序完成
let testArr = [1, 67, 3, 6, 9, 45, 78,22,111,56];
function bubbleSort( array ){
let len = array.length, temp;
if (len <= 1){
return array;
}else{
for (let i = 0; i < len - 1; i++){ //从零开始遍历,限制第一层循环的次数
for (let j = len - 1; j >= i; j--){ //从len-1位开始向前两两比较判断是否交换位置
if (array[j] < array[j - 1]){
temp = array[j-1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
return array;
}
}
let resArr = bubbleSort(testArr);
console.log(resArr);
结果: [1, 3, 6, 9, 22, 45, 56, 67, 78, 111]