排序引言

为什么排序算法很重要?

  有效的排序算法在一些算法(例如搜索算法合并算法)中是重要的(引自维基百科),个人觉得排序后就可以使用万能的对分检索啦!(排序算法是许多算法的选决条件)

怎样衡量一个排序算法的优劣?

  1、时间复杂度(最好情况,最差情况,平均情况 :O(f(n))描述)

  2、空间复杂度(占用的 附加存储 :O(f(n))描述)

  3、稳定性(即有 相等值 时,排序前后是否会影响 相等值 的顺序,1 若不影响为稳定,2 若影响为不稳定

  4、复杂性(实现难易程度:1 易,2 难)

注:O(f(n)) 描述由好到坏依次为—— O(1) > O(log*n) > O(log n) > O[(log n)^c] > O(n) > O(n log n) > O(n^2) > O(n^c) > O(c^n) > O(n!)

符号
名称
O(1)
常数(阶,下同)
O(log*n)
迭代对数
O(log n)
对数
O[(log n)^c]
多对数
O(n)
线性,次线性
O(n log n)
线性对数,或对数线性、拟线性、超线性
O(n^2)
平方
O(n^c),Integer(c>1)
多项式,有时叫作“代数”(阶)
O(c^n)
指数,有时叫作“几何”(阶)
O(n!)
阶乘,有时叫做“组合”(阶)

 

我怎样表达一个已经理解的算法?

  1、为什么要用它?(它的好处或优点)

  2、它的效果是什么样的?(原理)

  3、怎样实现它? (想马上看代码的同学点这里,一般用Java实现)

我找到的排序算法

  1、直接插入排序

  2、希尔排序(一种分组插入排序)

 

posted @ 2017-03-24 13:35  盗火人  阅读(322)  评论(0编辑  收藏  举报