算法-排序-冒泡

116 阅读1分钟

冒泡排序

原理

  • n轮排序,每一轮,将前一个数和后一个数做对比,如果前一个数大于后一个数,两个数交换
  • 第一轮可以将最大的放到最后,第二轮可以将第二大的放到倒数第二的位置...

优化

  • 如果某一轮一个都没有交换,则结束了
  • 当一个下标之后都没有交换的话,后面的排序好了,下次只需要遍历到标记的下表位置
function toSortByBubble(nums) {
  let _lastNeedSortIndex = nums.length - 1
  let m = 0
  for(;m < nums.length;m++){
    let n = 0,lnsi = 0
    for(;n < _lastNeedSortIndex;n++){
      if(nums[n] > nums[n+1]){
        let _temp = nums[i]
        nums[i] = nums[j]
        nums[j] = _temp
        lnsi = n
      }
    }
    console.log(lnsi)
    if(lnsi == 0) {
      break
    } else {
      _lastNeedSortIndex = lnsi
    }
  }
  return nums
}