数组的排序方法非常多,其中有封装好的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
閱讀更多 栗子紀 的文章
關鍵字: 算法 冒泡排序 JavaScript