三大经典排序算法之最经典之冒泡排序
Posted itsmart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三大经典排序算法之最经典之冒泡排序相关的知识,希望对你有一定的参考价值。
排序算法:冒泡排序
冒泡排序的思想:让数组中的当前项和后一项进行比较,如果当前项比后一项大,则两项交换位置(让大的靠后)即可
let ary = [12,8,24,16,1];
第一轮开始比较:
12>8 交换位置 [8,12,24,16,1]
12<24 不交换位置 [8,12,24,16,1]
24>16 交换位置 [8,12,16,24,1]
24>1 交换位置 [8,12,16,1,24]
第一轮完成后,虽然没有实现出最后的效果,但是当前数组中最大的这个值24放到了末尾
第二轮开始比较
8<12 不交换位置 [8,12,16,1,24]
12<16 不交换位置 [8,12,16,1,24]
16>1 交换位置 [8,12,1,16,24]
不用再和24比较了,而且本轮结束剩余值中最大的16也放到末尾了
第三轮比较
8< 12 不交换位置 [8,12,1,16,24]
12>1 交换位置 [8,1,12,16,24]
不用再和16比较了,而且本轮技术剩余值最大的12也放到末尾了
第四轮比较
8>1 交换位置 [1,8,12,16,24]
冒泡结束
需要比较length-1轮(5个数,只需要把4个最大的依次放到末尾即可)
第一轮比较4次,最多比较length-1次(不用和自己比较)
第二轮比较3次,每一轮比较我们都把当前最大的放到了末尾,所以当前轮比较多少次,需要把之前放到末尾的值也得去掉
...
/*冒泡排序*/
// ary传入的数组
// return的是返回的新数组
function bubble(ary){
let temp = null;
//外层循环i控制比较的轮数
for(let i = 0 ; i< ary.length-1; i++){
//里层循环控制每一轮比较的次数
for(let j=0;j< ary.length-1-i; j++){
if(ary[j]>ary[j+1]){
//当前项大于后一项
temp = ary[j];
ary[j] = ary[j+1];
ary[j+1] = temp;
}
}
}
return ary;
}
let ary = [12,8,24,16,1];
ary = bubble(ary);
console.log(ary);
以上是关于三大经典排序算法之最经典之冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章