排序算法列表
https://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#排序算法列表
冒泡排序 http://bubkoo.com/2014/01/12/sort-algorithm/bubble-sort/
插入排序 http://bubkoo.com/2014/01/14/sort-algorithm/insertion-sort/
桶排序 http://bubkoo.com/2014/01/15/sort-algorithm/bucket-sort/
常见排序算法归档:http://bubkoo.com/tags/algorithm/
算法的5个特征
- 输入:一个算法必须有零个或以上输入量。
- 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
- 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地匹配要求或期望,通常要求实际运行结果是确定的。
- 有限性:算法必须在有限个步骤内完成任务。
- 有效性:又称可行性,能够实现,比如:通过代码让电脑生个孩子出来是不可行的。
数据结构
就是数据的结构。
一般来说是这样的:
- 我们要解决一个跟数据相关的问题
- 分析这个问题,想出对应的数据结构
- 分析数据结构,想出算法
先分析数据的结构,再想出对应的算法
数据结构和算法是互相依存、不可分开的
你学习完排序算法,就能了解常见的数据结构
5种排序算法
身高两两对比法(冒泡排序,按顺序两两对比交换位置)
12345678910111213141516171819202122232425以数组 arr = [5, 1, 4, 2, 8] 为例说明,加粗的数字表示每次循环要比较的两个数字:第一次外循环( **5 1** 4 2 8 ) → ( **1 5** 4 2 8 ), 5 > 1 交换位置( 1 **5 4** 2 8 ) → ( 1 **4 5** 2 8 ), 5 > 4 交换位置( 1 4 **5 2** 8 ) → ( 1 4 **2 5** 8 ), 5 > 2 交换位置( 1 4 2 **5 8** ) → ( 1 4 2 **5 8** ), 5 < 8 位置不变第二次外循环(除开最后一个元素8不动,对剩余的序列)( **1 4** 2 5 8 ) → ( **1 4** 2 5 8 ), 1 < 4 位置不变( 1 **4 2** 5 8 ) → ( 1 **2 4** 5 8 ), 4 > 2 交换位置( 1 2 **4 5** 8 ) → ( 1 2 **4 5** 8 ), 4 < 5 位置不变8固定在最后第三次外循环(除开已经排序好的最后两个元素,可以注意到上面的数组其实已经排序完成,但是程序本身并不知道,所以还要进行后续的循环,直到剩余的序列为 1)5,8固定不变( **1 2** 4 5 8 ) → ( **1 2** 4 5 8 )( 1 **2 4** 5 8 ) → ( 1 **2 4** 5 8 )4,5,8固定不变第四次外循环(最后一次)( *1 2* 4 5 8 ) → ( *1 2* 4 5 8 )体育老师一指禅法(选择排序,每次从一堆中选出最小的那个数排到最前面,然后后面剩余的数重复这个步骤)
- 整理扑克牌法(插入排序)
- 桌上散落的扑克牌整理法(桶排序、基数排序)
- 快排(每次选择第一个数作为基准,比它小的放左边,比它大的放右边)
- 随机快排(每次快排随机选择一个数站定分割左右)
- 归并排序
- 堆排序
排序算法js代码
https://www.cnblogs.com/Unknw/p/6346681.html