美文网首页
常见排序(学习更新ing)

常见排序(学习更新ing)

作者: coolheadedY | 来源:发表于2017-05-08 16:30 被阅读13次

    冒泡排序

    实现思路

    依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位置。这样一遍比较下来,能够保证最大(或最小)的数排在最后一位。
    1每次比较相邻的两个数,符合规则(前一位 > 后一位)就调换两个数的位置(判断 > 调换位置)
    2通过第一步把最大的一位数排在最后一位(最后的一位数排序完毕)
    3最后一位已经排序完毕遂排除,对剩余未排序的数重复上面步骤直至排序完成

    排序设计

    1判断、调换位置

    function swap(myArr, p1, p2) {
      var temp = myArr[p1]
      myArr[p1] = myArr[p2]
      myArr[p2] = temp 
    }
    

    2排序循环

    function bubbleSort(myArr) {
      var len = myArr.length
      var stop // 设置已排序与未排序的位置
      var i
      var j  // 设置for循环遍历次数的变量, 防止混淆
      for(i = 0; i < len - 1; i ++) { // 第i遍循环数组排序
        for(j = 0; j < len - 1 - i; j ++) { // 检查数组每个数,已排序完毕的则不进行重新排序
          if(myArr[j] > myArr[j + 1]) {
            swap(myArr, j, j + 1)
          }
        }
      }
      return myArr
    }
    

    选择排序

    实现思路

    1每次假设剩余未比较的数组里的第一位为最小值
    2将假设的最小值与其余数值比较找出最小值
    3比较完毕后将最小值置为第一位

    排序设计

    1判断、调换位置

    function swap(myArr, p1, p2) {
      var temp = myArr[p1]
      myArr[p1] = myArr[p2]
      myArr[p2] = temp 
    }
    

    2排序循环

    function selectionSort(myArr) {
      var len = myArr.length
      var min
      for(i = 0; i < len - 1; i++) {
        min = i
        for(j = i + 1; j < len; j++) {
          if(myArr[j] < myArr[i]) {
            min = j
          }
        }
        if(i != min) {
          swap(myArr, i, min)
        }
      }
      return myArr
    }
    

    相关文章

      网友评论

          本文标题:常见排序(学习更新ing)

          本文链接:https://www.haomeiwen.com/subject/vaumtxtx.html