js 数组冒泡排序
冒泡排序原理:
升序:
比较相邻元素,如果第一个比第二个大,就交换它们两个
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数.
针对所有的元素重复以上的步骤,除了最后一个.
持续每次对原来越少的元素重复上面的步骤,
直到没有任何一对数字需要比较.
1 //数组arr 2 arr = [12,10,15,8,4]
对上面的数组进行排序
分析:
第一次比较:
arr[0]= 12 大于10,向右移动 结果: 10 12 15 8 4
arr[1]= 12 小于15,停止比较 结果: 10 12 15 8 4
arr[2]= 15 大于8,向右移动 结果: 10 12 8 15 4
arr[3]= 15 大于4,向右移动 结果: 10 12 8 4 15
第二次比较:
arr[0]= 10 小于12, 停止比较 结果: 10 12 8 4 15
arr[1]= 12 大于8, 向右移动 结果: 10 8 12 4 15
arr[2]= 12 大于4, 向右移动 结果: 10 8 4 12 15
arr[3]= 12 小于15, 停止比较 结果: 10 8 4 12 15
第三次比较:
arr[0]= 10 大于8, 向右移动 结果: 8 10 4 12 15
arr[1]= 10 大于4, 向右移动 结果: 8 4 10 12 15
arr[2]= 10 小于12, 停止比较 结果: 8 4 10 12 15
arr[3]= 12 小于15, 停止比较 结果: 8 4 10 12 15
第四次比较:
arr[0]= 8 大于4, 向右移动 结果: 4 8 10 12 15
arr[1]= 8 小于10,停止比较 结果: 4 8 10 12 15
arr[2]= 10 小于12,停止比较 结果: 4 8 10 12 15
arr[3]= 12 小于15,停止比较 结果: 4 8 10 12 15
1 //冒泡排序写法 2 var arr = [12, 10, 15, 8, 4] 3 for(var i = 4; i > 0; i--) { 4 for (var j = 0; j < 4; j++) { 5 if(arr[j] > arr[j + 1]){ 6 var temp = arr[j] 7 arr[j] = arr[j + 1] 8 arr[j + 1] = temp 9 } 10 } 11 }
优化上面的代码:
第一次比较结果将最大值放到数组最后
第二次比较结果将第二最大值放到数组倒数第二位
第三次比较结果将第三最大值放到数组倒数第三位
第四次比较将结果第四最大值放到数组倒数第四位
至此比较结束
我们看到上面的比较结果:
第一次比较四次得到最大值
第二次比较三次得到第二最大值
第三次比较两次得到第三最大值
第四次比较一次得到第四最大值
代码优化:
1 //优化冒泡排序写法 2 3 var arr = [12, 10, 15, 8, 4] 4 5 function arrSort(arr) { 6 for(var i = 0; i < arr.length; i++) { 7 for (var j = 0; j < arr.length -i -1; j++) { 8 if(arr[j] > arr[j + 1]){ 9 var temp = arr[j] 10 arr[j] = arr[j + 1] 11 arr[j + 1] = temp 12 } 13 } 14 } 15 return arr 16 } 17 console.log(arrSort(arr))

浙公网安备 33010602011771号