一直没写过和想过排序算法,今天搜了一下原理,自己尝试了一下。
如有错误,请指出,请原谅
冒泡排序
网上给出的原理是通过比较两个相邻的值,如果左边比右边大,则把左右位置替换
var arr = [2, 6, 5, 4, 12, 8, 25, 34, 22, 45, 41, 89, 67]
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i+1]) {
var right = arr [i]
arr[i] = arr[i+1]
arr[i+1] = right
}
}
循环完成之后结果是[2, 5, 4, 6, 8, 12, 25, 22, 34, 41, 45, 67, 89],发现有些数字排列不对,还需要再次循环,在每个i进入循环时,应该嵌套一个循环,遍历数组,进行大小比对。
改进后的代码
for (var i = 0; i < arr.length-1; i++) {
for (var s = 0; s < arr.length - i - 1; s++) {
if (arr[s] > arr[s+1]) {
var right = arr [s]
arr[s] = arr[s+1]
arr[s+1] = right
}
}
由于第一次循环完成之后,最大的数字是排在最后的,所以最后一个循环可以不需要。
console.log(arr) // [2, 4, 5, 6, 8, 12, 22, 25, 34, 41, 45, 67, 89]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。