javascript排序算法整理
前端面试中必不可少的技能
/**
* 高效率冒泡排序
* 外层for循环控制循环次数
* 内层for循环负责相邻两数交换位置,找到最大数,排到最后
* 设置done标志位,减少不必要循环
*/
var arr = [1, 3, 4, 90, 8, 49, 0];
var max = arr.length - 1;
for (var j = 0; j < max; j++) {
var done = true;
// 这里可以根据外层的j 逐渐减少内层遍历
// 因为每次遍历置于最后的元素 不需要在参加遍历 [1, 3, 4, 0, 8, 49, 90]
for (var i = 0; i < max - j; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
done = false;
}
}
if (done) {
break;
}
} 相关推荐
lixiaotao 2020-10-07
美丽的泡沫 2020-09-08
nongfusanquan0 2020-08-18
hang0 2020-08-16
earthhouge 2020-08-15
算法改变人生 2020-07-28
troysps 2020-07-19
Broadview 2020-07-19
chenfei0 2020-07-18
风吹夏天 2020-07-07
yangjingdong00 2020-07-05
数据与算法之美 2020-07-05
shawsun 2020-07-04
数据与算法之美 2020-07-04
要知道时间复杂度只是描述一个增长趋势,复杂度为O的排序算法执行时间不一定比复杂度为O长,因为在计算O时省略了系数、常数、低阶。实际上,在对小规模数据进行排序时,n2的值实际比 knlogn+c还要小。
Evankaka 2020-07-04
田有朋 2020-06-28