常见排序(学习更新ing)

冒泡排序

实现思路

依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位置。这样一遍比较下来,能够保证最大(或最小)的数排在最后一位。
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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,608评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,109评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,037评论 0 2
  • 前言 本篇文章基本是从常用排序算法总结(一)快速排序引申而来,其中大部分代码和描述都来自这两篇文章。 时间复杂度 ...
    王三的猫阿德阅读 4,839评论 0 1
  • 马上就要出iOS10了,但是还是有好多小伙伴不知道iOS9的新特性,这怎么能行呢,今天就要给不知道小伙伴讲一讲。 ...
    zhanming阅读 5,739评论 3 33

友情链接更多精彩内容