冒泡排序之基础优化
Posted strivegys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序之基础优化相关的知识,希望对你有一定的参考价值。
- 普通版本
function doubleSort(arr) { let len = arr.length - 1; for(let i=0; i<arr.length; i++) { // 第一层循环遍历总次数 for(let j=0; j<len-i; j++) { // 第二层循环 从左往右 j 与 j + 1 数值比较 if(arr[j] > arr[j+1]) { let temp = arr[j]; arr[j] = arr[j+1] arr[j+1] = temp; } } } return arr; }
- 优化版本(一)
function doubleSort(arr) { let len = arr.length - 1; let isExchange; // 增加标志位字段,判断后面对比是否进行数值交换,如果没有交换,代表是有序,否则代表无序 for(let i=0; i<arr.length; i++) { isExchange = true; // 每次循环开始,都是为 true, 交换之后才置为 false for(let j=0; j<len; j++) { if(arr[j] > arr[j+1]) { let temp = arr[j]; arr[j] = arr[j+1] arr[j+1] = temp; isExchange = false; } } if(isExchange) { // 如果有序后面就不要循环对比了,直接跳出 break; }; } return arr; }
- 优化版本(二)
function doubleSort(arr) { let len = arr.length - 1; let isExchange,sortLine; // 记录最后一次交换的位置,减少下次内部循环的次数 for(let i=0; i<arr.length; i++) { isExchange = true; for(let j=0; j<len; j++) { if(arr[j] > arr[j+1]) { let temp = arr[j]; arr[j] = arr[j+1] arr[j+1] = temp; isExchange = false; sortLine = j; } } len = sortLine; if(isExchange) { break; }; } return arr; }
高级版本优化 之 鸡尾酒排序,期待 !
以上是关于冒泡排序之基础优化的主要内容,如果未能解决你的问题,请参考以下文章