常见算法
排序
冒泡排序
- 从第一个元素开始,把当前元素和下一个索引元素进行比较。如果当前元素大,那么就交换位置,重复操作比较至最后一个元素,此时最后一个元素就是最大的数。下一轮重复以上操作,此时无需比较最后一个元素,只需比较到
length-2
位置。 - 实现代码如下:
function bubble(array) { checkArray(array) for (let i = array.length - 1; i > 0; i--) { for (let j = 0; j < i; j++) { if (array[j] > array[j + 1]) swap(array, j, j+1) } } return array }
- 该算法操作次数是一个等差数列
n + (n - 1) + (n - 2) + 1
,,去掉常数项以后得出时间复杂度是 O(n * n)
插入排序
- 第一个元素默认是已排序元素,取出下一个元素和当前元素比较,如果当前元素大就交换位置,那么此时第一个元素就是当前最小值,所以下次取出操作从第三个元素开始,向前对比,重复之前的操作。
- 实现代码如下:
function insertion(arr) { if (!checkArray(arr)) return for (let i = 1; i < arr.length; i++) { for (let j = i - 1; j > 0 && arr[j] > arr[j + 1]; j --) { swap(array, j, j + 1) } } }
- 该算法操作次数是一个等差数列
n + (n - 1) + (n - 2) + 1
,,去掉常数项以后得出时间复杂度是 O(n * n)
选择排序
- 原理如下:遍历数组,设置最小值的索引为0,如果取出的值比当前最小值小,就替换最小值索引;遍历完成后,将第一个元素和最小值索引上的值交换。从索引1 开始重复操作。
- 实现代码如下:
function selection(arr) { if (!checkArr(arr)) return for (let i = 0; i < arr.length - 1; i ++ ) { minIndex = array[j] < array[minIndex] ? j : minIndex; } swap(array, i, minIndex); } return array; }
- 该算法操作次数是一个等差数列
n + (n - 1) + (n - 2) + 1
,,去掉常数项以后得出时间复杂度是 O(n * n)
相关推荐
lwnylslwnyls 2020-11-06
ATenhong 2020-10-15
bluewelkin 2020-09-16
chensen 2020-11-14
yanzhelee 2020-10-13
佛系程序员J 2020-10-10
guojin0 2020-10-08
佛系程序员J 2020-10-08
wwzaqw 2020-09-04
zhongdaowendao 2020-09-02
favouriter 2020-08-18
奎因amp华洛 2020-08-15
一青年 2020-08-13
千锋 2020-08-10
nangongyanya 2020-08-09
dongxurr 2020-08-08
明天你好 2020-08-03
kyelu 2020-08-03
Ashes 2020-08-03