选择排序
- 从数组中选取一个元素 item,初次为第一个元素
- 在 item 剩余的元素中找到最小的元素
- 将这个最小的元素与 item 交换位置
- 重复 1,2, 3的过程,一直到数组结束
1 | function selectSort(arr) { |
插入排序
- 从数组中的第二个元素开始抽取元素 item
- 将 item 与 item 左边第一个元素进行比较,如果左边的元素大于item,那么继续与左边第二个元素继续比较,直到遇到不大于item 的元素,然后将这个元素插入到 item 的右边
- 继续选取第 3, 4, 5 个元素, 重复 2 过程, 直到数组结束
1 | function insertSort(arr) { |
冒泡排序
- 将第一个元素与第二个元素进行比较,如果第一个元素比第二个大,那么交换他们的位置,接着继续比较第二个元素和第三个元素
- 经过一轮比较之后,现在最右边的元素是数组里面最大的元素
- 除去最右边已经筛选后的元素之后,再对剩余的元素执行 1 过程
1 | function bubbleSort(arr, sortedIndex = arr.length - 1) { |
归并排序
- 将大数组拆分为小数组,再拆分小数组,一直拆分到数组内只有一个元素
- 对于小数组内的元素进行排序操作,然后将小数组进行组合
- 最后组合的大数组为已经排好序的数组
1 | function merge(arr, left, mid, right) { |
快速排序
- 选取数组中的一个元素为中轴元素,将数组中所有小于中轴元素的元素放在左边,所有大于或者等于中轴元素的元素放在右边
- 进行完过程 1 之后,这时候中轴元素的位置已经确定了,这个元素左边都是比它小的元素,右边都是比它大的元素
- 对于中轴元素左右两边的元素再分别进行 1 过程,直到所有的元素作为中轴元素位置都确定了为止
1 | function partition(arr, left, right) { |