常见排序(学习更新ing)

2017-05-08  本文已影响13人  coolheadedY

冒泡排序

实现思路

依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位置。这样一遍比较下来,能够保证最大(或最小)的数排在最后一位。
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
}
上一篇下一篇

猜你喜欢

热点阅读