数组排序算法整理
参考
冒泡排序
思想:
- 两层循环
- 外层循环控制循环控制开始比较的下标 i
- 内循环将 i 之后元素两两比较,交换位置,将最大值或最小值移动到位置 i。
1 | function bubbleSort(fun) { |
快速排序
思想:
- 新建两个数组 left,right
- 选择一个数作为基准数,可以是数组中的任意一个元素,一般取数组的中间元素
- 将数组中的元素与基准数比较,小于基准数放 left 数组(升序),大于基准值的放进右边 right 数组。
- 将左右数组作为参数递归调用排序函数
1 | function quickSort(fun) { |
插入排序
思想:
- 从第一个元素开始,默认该元素为已被排序元素(最大或最小)
- 取出当前元素的后一个元素,与已经排序的元素序列(此元素的前面元素)从后向前循环比较
- 如果该元素小于(递增排序)循环拿到的元素,就与下一位循环元素比较,
- 重复步骤 3,直到找到已排序元素中小于或等于新元素的位置,将该元素插入循环元素的后面
- 如果没有找到,就插入到数组最后面
- 重复步骤 2-5
1 | function insertSort(arr) { |
选择排序
思想:
- 设置索引值为 0 的元素为最小值
- 遍历索引为 0 以后的数组,如果后面的元素小于索引为 0 的元素就交换
- 遍历完成后,将索引为加一,以此元素为最小值,重复 2
1 | function selectionSort(fun) { |