码迷,mamicode.com
首页 > 编程语言 > 详细

三大经典排序算法之最经典之冒泡排序

时间:2020-03-30 19:18:36      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:cti   OLE   i++   function   控制   冒泡排序   log   循环控制   开始   

排序算法:冒泡排序

冒泡排序的思想:让数组中的当前项和后一项进行比较,如果当前项比后一项大,则两项交换位置(让大的靠后)即可

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);
 

 

三大经典排序算法之最经典之冒泡排序

标签:cti   OLE   i++   function   控制   冒泡排序   log   循环控制   开始   

原文地址:https://www.cnblogs.com/itsmart/p/12600325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!