冒泡排序
时间复杂的:O(n²)
原理
比较任何两个相邻的项,如果第一个比第二个大则交换它们。
实现
1 | function bubbleSort(arr) { |
选择排序
时间复杂的:O(n²)
原理
找到最小值放到第一位,再找到第二小的值并将其放在第二位,以此类推。
实现
1 | function selectionSort(arr) { |
插入排序
时间复杂度:最好O(n)
,一般O(n²)
,最坏O(n²)
原理
假定第一项已经排序了,接着它和第二项比较,大就待在原位,小则插到第一项之前,接着第三项又和第一、第二项比较,以此类推。
实现
1 | function insertionSort(arr) { |
归并排序
时间复杂度:最好O(nlog(n))
,一般O(nlog(n))
,最坏O(nlog(n))
原理
将原始数组切分成较小的数组,直到每个小数组只有一个位置,接着将小数组归并成较大的数组,直到最后一个排序完毕的大数组。
实现
1 | function mergeSort(arr) { |
快速排序
时间复杂度:最好O(nlog(n))
,一般O(nlog(n))
,最坏O(n²)
原理
选择数组中间一项为主元,创造两个指针,左边指向数组第一项,右边指向数组最后一项。先移动左指针直到找到一个比主元大的数,接着,移动右指针直到一个比主元小的数,然后交换它们,重复此过程,直到左指针超过右指针。
实现
1 | function quickSort(arr) { |