ICode9

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

冒泡排序和选择排序

2020-07-08 20:35:08  阅读:173  来源: 互联网

标签:arr temp min 最小值 冒泡排序 选择 length var 排序


冒泡排序

    var arr = [4,2,5,7,8,2,1]
    console.log(arr)
    // 用冒泡排序从小到大
    // 总共有arr.length个数,每一趟都能确定一个最大值,但是最后一个不需要比较
    // 所以总共要比较arr.length-1趟  0 ~ length-2
    // 5  4 0~3
    for (var i = 0; i < arr.length - 1; i++) {
      // 当前第i趟要比较的次数
      // arr.length   i    比较次数
      //    5         0       4
      //    5         1       3
      //    5         2       2
      // arr.length   i    arr.length - i - 1
      for (var j = 0; j < arr.length - i - 1; j++) {
        // 相邻的两个数来比较 arr[j]和arr[j+1]
        if (arr[j] > arr[j+1]) {
          // 交换
          var temp = arr[j]
          arr[j] = arr[j+1]
          arr[j+1] = temp
        }
      }
    }
    console.log(arr)

选择排序

    // 每一趟循环能确定当前的最小值,总的循环趟数arr.length-1
    for (var i = 0; i < arr.length - 1; i++) {
      // 先假设当前最小值的索引为i
      var min = i
      // 用假设的最小值跟后面的值一一比较
      // 如果遇到后面的值比假设的最小值还要小,说明假设错误
      // 最小值的索引应该重新赋值为后面小值的索引
      // 一趟结束以后就可以得到最小索引,这个时候再交换
      // 内层循环从i+1开始,每一趟都要比较到最后一个,所以到arr.length-1结束
      for (var j = i + 1; j < arr.length; j++) {
        // 判断arr[min]是否大于arr[j],如果大于了,说明arr[j]才是最小值
        // min就应该重新赋值为j
        if (arr[min] > arr[j]) {
          min = j
        }
      }
      // 内层循环结束以后,当前这一趟的最小值就被找到了
      // 让arr[i]和arr[min]交换
      // 如果i和min相等,那么就没有交换的必要了
      if (i != min) {
        var temp = arr[i]
        arr[i] = arr[min]
        arr[min] = temp
      }
    }

 

标签:arr,temp,min,最小值,冒泡排序,选择,length,var,排序
来源: https://www.cnblogs.com/52580587zl/p/13269077.html

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

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

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

ICode9版权所有