-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
基础排序算法之三:冒泡排序
最简单的排序算法
冒泡排序作为面试官最喜欢问的问题之一,弥补了其性能差劲的缺点!
代码实现
// Bubble.js
// 交换数组中两个元素的方法
function exch(arr, m, n) {
var temp = arr[m];
arr[m] = arr[n];
arr[n] = temp;
}
const Bubble = (arr) => {
var len = arr.length,
i;
// 标志从最后一个位置开始,将最大的放在这里,每次往前进一位
for (var flag=len-1; flag>0; flag--) {
i = 1;
// 循环当前长度的数组,如果数组长度小于二,跳出循环
while (i <= flag) {
// 比较两个元素,小放前面,大的放后面
if (arr[i] < arr[i-1]) exch(arr,i-1,i);
i++;
}
}
return arr;
};
export default Bubble;
排序性能
排序的时间和输入相关:数组有序,一趟扫描不需要移动就可以完成。若初始为反序,每趟需要移动 1 至 (n-1)次,外循环次数固定为 n-1
数据移动:初始顺序相关
Reactions are currently unavailable