冒泡排序的思想:
- 两个数值比较,假如规则为升序,那吗将两个值的大值放到第二位,小值放在第一位
- 遍历结束,数组最大值出现在数组最后
- 重复遍历,将剩余值依照第一步与第二步进行
时间复杂度 O(n²) 空间复杂度O(n)
/**
* 冒泡排序
*/
function insertion_sort(arr) {
for(let l = 0; l < arr.length; l++) {
for (let i = 0; i < arr.length; i++) {
/**
* 当前位于下一位进行比较,那个大那个在后面,第一轮循环将最大值放到数组最后一位
*/
if (arr[i] > arr[i + 1]) {
swapPosition(arr, i, i + 1);
} else {
break;
}
}
}
return arr;
}
/**
* 交换数组相邻的位置
*/
function swapPosition(arr, cur, next) {
const nextValue = arr[next];
arr[next] = arr[cur]
arr[cur] = nextValue;
}
const arr = [5,4,3,1,2];
console.log(insertion_sort(arr));