ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

冒泡排序之基础优化

2020-07-06 17:35:07  阅读:190  来源: 互联网

标签:arr temp 基础 isExchange 冒泡排序 sortLine let len 优化


  • 普通版本
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;
}

 

标签:arr,temp,基础,isExchange,冒泡排序,sortLine,let,len,优化
来源: https://www.cnblogs.com/strivegys/p/13255950.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有