介绍4种常见排序算法,将 JavaScript 的实现过程做一个分享:冒泡排序
、选择排序
、插入排序
、快速排序
。
此处首先定义一个 swap 函数,实现了数组中元素调换的功能,在后面的排序算法都是直接调用这个函数的~
//将数组 arr 中下标为 i 和 j 调换位置
function swap(arr, i, j) {
var temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
冒泡排序(Bubble Sort)
基本思路:
- 比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
// 最差时间复杂度 ---- O(n^2)
// 最优时间复杂度 ---- 如果能在内部循环第一次运行时,使用一个旗标来表示有无需要交换的可能,可以把最优时间复杂度降低到O(n)
// 平均时间复杂度 ---- O(n^2)
// 所需辅助空间 ------ O(1)
// 稳定性 ------------ 稳定
function sort(arr) {
//外循环每次运行都可以将最大的值“起泡”到数组最后
for(var i =