javaScript 冒泡排序算法

数组的排序方法非常多,其中有封装好的sort()方法,也有js原生语句实现的冒泡排序、快速排序和选择排序等算法。以下介绍冒泡排序的算法。

var arr=[6,5,4,3,2,1];实现从小到大排序

冒泡排序:数组内前后两两比较,如果前者大于后者,则交换两者位置,直到所有的元素都按照从小到大排列,结束排序。

原理:两两比较,始终将较大的数放在后面

代码

<code>var arr=[6,5,4,3,2,1];
//执行arr.length-1次循环,因为每次循环都会固定一位最大的数放在最后位置,当第五次循环时,结果会将最大的数放在arr[1],排序结束
for(var i=0;i<arr.length-1> //决定每轮元素比较多少次,当每次轮结束时,会将最大的数放在最后,下一轮比较时,最后固定的较大的数可以不再比较,所以j<arr.length-1-i.> for(var j=0;j<arr.length-1-i> //每次比较时,如果前者大于后者,则调换二者位置
if(arr[j]>arr[j+1]){
//两个元素互换值,应该定义第三变量,下方赋值原理为:arr[j+1]--->temp;arr[j]--->arr[j+1];temp--->arr[j]
var temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}/<arr.length-1-i>/<arr.length-1-i.>/<arr.length-1>/<code>

比较过程

第一轮

第1次比较:

5 6 4 3 2 1

第2次比较:5 4 6 3 2 1

第3次比较:5 4 3 6 2 1

第4次比较:5 4 3 2 6 1

第5次比较:5 4 3 2 1 6

第二轮 (第一轮结束最后一位最大的数6不再比较)

第1次比较:4 5 3 2 1

第2次比较:4 3 5 2 1

第3次比较:4 3 2 5 1

第3次比较:4 3 2 1 5

第三轮 (第二轮结束最后一位最大的数5不再比较)

第1次比较:

3 4 2 1

第2次比较:3 2 4 1

第3次比较:3 2 1 4

第四轮 (第三轮结束最后一位最大的数4不再比较)

第1次比较:2 3 1

第2次比较:2 1 3

第五轮 (第四轮结束最后一位最大的数3不再比较)

第1次比较: 1 2


分享到:


相關文章: