排序

  • 选择排序
    • 简单选择排序
    • 在未排序序列中找出最小元素与序首元素交换位置,然后再剩下的未排序序列中找出最小元素与序列第二位元素交换位置,依次类推。
    • T(n)=O(N^2)
    for(int i=0;i<N;i++){
        int min=i;
        for(int j=i+1;j<N;j++){
            if(a[j]<a[min])
                min=j;
        }
        temp=a[i];
        a[i]=a[min];
        a[min]=temp;
   }
  • 堆排序

  • 堆是一种特殊的二叉树,子节点的值小于父节点的值

  • 利用最大堆(最小堆)输出堆顶元素,即最大值(最小值),然后再剩下的元素重新生成最大堆(最小堆),继续输出堆顶元素,直到输出所有元素。

  • 插入排序

    • 简单插入排序
    • 将待排序序列分为已经排好序的和未排好序的两个部分。
    • 初始状态时,已排序序列仅包含第一个元素,将未排序序列中的元素逐一插入到已排序的序列中,经过N-1次插入则排序完成。
    • 插入排序是相对稳定的排序,数值相同的两个记录不会发生相对位置上的变化
    • T(n)=O(N^2)
    for(int i=1;i<N;i++){
       temp=a[i];
       for(int j=i;(j>0)&&(temp<a[j-1]);j--){
           A[j]=A[j-1]    //j是从i开始的,已排好序的元素右移给腾出位置
       }
       A[j]=temp;   //插入到合适的位置
    }
  • 希尔排序

    • 简单插入排序效率不高的重要原因是每次只交换相邻的两个元素,这样一次只能消去一对错位的元素。希尔排序试图通过每次交换一定距离的两个元素,达到排序效率上的提升。
  • 希尔排序将待排序的一组元素按一定间隔分为若干个序列,分别进行插入排序,开始时设置的间隔较大,在每轮排序中间隔逐步减小,直到间隔为1,也就是最后一轮排序。

  • 交换排序

    • 冒泡排序
    • 对元素个数为N的待排序序列,共进行N-1次循环。
    • 在第K次循环中,对从第1个元素到第N-K个元素从前往后进行比较,每次比较相邻的两个元素,若前一个元素大于后一个元素则交换位置,否则保持位置不变,这样一次循环下来就把第K大的元素放到第N-K的位置上,称为第K趟的冒泡。
    • T(n)=O(N^2)
    • 冒泡排序也是一种稳定的排序
for(int i=0;i<N;i++){
        flag=0;              //标记这次循环是否有发生交换,若无则说明整个序列有序
        for(int j=0;j<N-i-1;i++){
           if(a[j+1]<a[j]){
              temp=a[j+1];
              a[j+1]=a[j];
                a[j]=temp;
              flag=1;
           }
        }
        if(!flag)
          break;           //若没有发生交换,则跳出循环
     }
  • 快速排序

  • 将未排序元素根据基准分为两个子序列,然后对两个子序列用类似的方法排序。

  • T(n)=O(NlogN)

  • 至少需要O(logN)深度的栈空间

  • 归并排序

    • 将大小为N的序列看成N个长度为1的子序列,接下来将相邻子序列进行归并操作,形成[N/2]个长度为2(或1)的有序子序列,然后再进行相邻子序列的两两归并操作,如此一直循环知道只剩下一个长度为N的序列。
    • 需要申请额外空间用于放置两个子序列归并之后的结果
    • T(n)=O(NlogN)
  • 桶排序

    • 已知N个关键字的取值范围是0-M-1;而M比N小得多,则桶排序算法将为关键字的每个可能取值建立一个桶,在扫描N个关键字时,将每个关键字放入相应的桶中,然后按桶的顺序收集一遍就自然有序了。
    • 桶排序效率比一般排序算法高,额外条件是已知关键字的范围i,并且关键字在此范围内是可列的个数还不能超过内存空间所能承受的限度。
  • 基数排序
    基数排序是对桶排序的一种推广,所考虑的待排序记录包含不止一个关键字,例如对一副牌的整理。

  • 归纳
  • 排序算法性能从低到高的顺序大致为:冒泡排序、插入排序、选择排序、希尔排序、快速排序。但这个优劣顺序不是绝对的,在不同的情况下,甚至可能出现完全的性能逆转。
  • 对于序列初始状态基本有正序,可选择对有序性较敏感的如插入排序、冒泡排序、选择排序等方法
  • 对于序列长度 比较大的随机序列,应选择平均时间复杂度较小的快速排序方法。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,323评论 0 1
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,164评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,727评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,235评论 0 2
  • 此时此刻,孩子还在熟睡,看着他俩肉嘟嘟的小脸,内心里满是愧疚! 从他俩出生到他俩五岁,几乎都待在我身边。每天下班后...
    优优泽泽阅读 316评论 0 0