十大排序算法的复杂度、排序方式、稳定性

相关概念
  • 1.算法复杂度
    • 时间复杂度:是指执行算法所需要的时间(计算工作量)。
      • 语句频度/时间频度:一个算法中的语句执行次数,记为T(n)。
    • 空间复杂度:是指执行这个算法所需要的内存空间。
  • 2.排序方式
    • 根据是否需要借助额外的数组来辅助排序,分为:
      • In-place:不需要借助额外的数组,直接对待排序数组中的元素进行比较和交换。
      • Out-place:需要利用额外的数组来辅助排序。
    • 举例:冒泡排序,不需要借助额外数组,直接对待排序数组的相邻元素两两比较和交换,属于In-place。计数排序,需要一个额外的计数数组来辅助排序,属于Out-place。
  • 3.稳定性
    • 稳定:等值元素的先后顺序,排序前后“不”发生改变,称这种排序算法是稳定的。
      • 包括:冒泡排序,直接插入排序,归并排序,计数排序,桶排序,基数排序。
    • 不稳定:等值元素的先后顺序,排序前后“可能”发生改变,称为不稳定的。
    • 包括:快速排序,希尔排序,简单选择排序,堆排序。
总结十大排序算法的复杂度、排序方式、稳定性
原理简述
  • 1.冒泡排序
    1)比较相邻的元素,如果前一个比后一个大,就交换它们。
    2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这样一轮比较结束,最大的数被移动到了最后的位置。
    3)针对所有的元素重复以上的步骤,除了最后一个。
    4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
  • 2.快速排序
    1)先从数列中取出一个数作为基准数。
    2)分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
    3)再对左右区间重复第二步,直到各区间只有一个数。
    更多参考「快速排序」,对挖坑填数进行总结:

    • 1.i=L; j=R; 将基准数挖出形成第一个坑a[i]。
    • 2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。
    • 3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。
    • 4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。
  • 3.直接插入排序
    1)先将数组arr分为左右两部分,左侧sorted_list=[arr[0]],右侧unsorted_list=arr[1:]。
    2)依次遍历unsorted_list列表中的元素a:

    • 元素a与sorted_list中的元素b从后向前依次进行比较;
    • 满足条件a<b或a>b(根据排序顺序确定)时,b元素往后移动一格;
    • 直到最终不满足条件时,将元素a填入sorted_list中的索引空位。
  • 4.希尔排序
    1)取序列长度的一半(向下取整)作为增量gap,对序列进行分组。
    2)然后对各组进行“直接插入排序”。
    3)增量gap依次减半(向下取整),重复1)、2),最终一次的增量gap为1。
  • 5.简单选择排序
    第一轮找最小的数并放到第一个位置。
    第二轮找第二小的数并放到第二个位置。
    依次迭代...
  • 6.堆排序
    1)把无序数组构建成二叉堆(若从小到大排序,则构建成最大堆)。
    2)将堆顶元素与二叉堆末尾元素进行替换(此时,最后一个元素已经排序好了)。
    3)对剩余未排序的元素,循环重复1)、2)。
  • 7.归并排序
    二路归并排序:将序列不断二分为多个子序列,对子序列从上到下依次进行排序合并。
  • 8.计数排序
    定义一个计数数组,统计每个元素出现的次数。
  • 9.桶排序
    先分桶,每个桶代表一个数值区间范围,将元素放入对应桶中。
    然后,对每个桶分别进行排序(可递归调用桶排序)。
    最后,合并所有的桶即可。
  • 10.基数排序
    取数组中最大元素的位深(个、十、百...)。
    按个位分桶,然后取出。
    按十位分桶,然后取出。
    依次类推...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,575评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,229评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,350评论 2 7