數(shù)據(jù)結(jié)構(gòu)—排序

內(nèi)部排序:指待排序記錄全部存放在內(nèi)存中排序的過(guò)程。
外部排序:指待排序記錄的數(shù)量很大,以至于內(nèi)存不能容納全部記錄,在排序過(guò)程中尚需對(duì)外存進(jìn)行訪問(wèn)的過(guò)程。

插入排序

1.直接插入排序
先將序列中的第一個(gè)記錄看成一個(gè)有序列,然后從第二個(gè)記錄開(kāi)始,逐個(gè)進(jìn)行插入,直至整個(gè)序列有序,排序過(guò)程為n-1躺插入。

  • 時(shí)間效率:因?yàn)樵谧顗那闆r下,所有元素的比較次數(shù)總和為(0+1+...+n-1)—>O(n的平方),時(shí)間復(fù)雜度O(n的平方)。
  • 空間效率:僅占用1個(gè)緩沖單元—O(1)
  • 算法的穩(wěn)定性:穩(wěn)定
    2、希爾排序


示意圖
選擇排序

每一次從待排序的數(shù)據(jù)元素中選出最小的一個(gè)元素,存放在已排序列的后面,直到全部待排序的數(shù)據(jù)元素排完。

  • 優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單
  • 缺點(diǎn):每趟只能確定一個(gè)元素,表長(zhǎng)為n時(shí)需要n-1趟
  • 前提:順序存儲(chǔ)結(jié)構(gòu)

1、直接選擇排序
在所有記錄中選出最小的記錄,把它與第一個(gè)記錄交換,然后在剩余的記錄內(nèi)選出最小的記錄與第二個(gè)記錄交換...依次類推。


示意圖

2、堆排序


示意圖

堆排序的最壞時(shí)間復(fù)雜度為O(n倍的log以2為底的n次方),堆排序平均性能接近最壞性能。
堆排序的輔助空間為O(1)。

交換排序

1、冒泡排序

  • 時(shí)間效率:O(n的平方)
  • 空間效率:O(1)
  • 穩(wěn)定性:穩(wěn)定

2、快速排序

  • 優(yōu)點(diǎn):因?yàn)槊刻丝梢源_定不止一個(gè)元素的位置,而且呈指數(shù)增加,所以特別
    示意圖

快速排序最壞時(shí)間復(fù)雜度O(n的平方),最好時(shí)間復(fù)雜度為O(n倍的log以2為底的n次方)

歸并排序

可以把一個(gè)長(zhǎng)度為n的無(wú)序序列看成是n個(gè)長(zhǎng)度為1的有序子序列,首先做兩兩歸并,得到n/2個(gè)長(zhǎng)度為2的有序子序列;再做兩兩歸并,如此重復(fù),直到最后得到一個(gè)長(zhǎng)度為n的有序序列。

示意圖

時(shí)間效率:O(nLog以2為底的n次方)
空間效率:O(n)
穩(wěn)定性:穩(wěn)定

算法復(fù)雜性比較

排序算法時(shí)間復(fù)雜度表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、 單項(xiàng)選擇題(共71題) 對(duì)n個(gè)元素的序列進(jìn)行冒泡排序時(shí),最少的比較次數(shù)是( )。A. n ...
    貝影閱讀 9,425評(píng)論 0 10
  • 1.數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu):專門研究應(yīng)用程序中數(shù)據(jù)之間邏輯關(guān)系、存儲(chǔ)方式及其操作的學(xué)問(wèn) 集合:數(shù)據(jù)元素之間只有“同屬于...
    怪蜀黍Zzzzlw閱讀 1,270評(píng)論 0 21
  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對(duì)這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過(guò)這...
    Winterfell_Z閱讀 6,603評(píng)論 0 13
  • 冒泡排序---Bubble Sort 冒泡排序是一種簡(jiǎn)單的排序算法,它重復(fù)地遍歷要排序的數(shù)列,一次比較兩個(gè)元素,如...
    LittlePy閱讀 240評(píng)論 0 0
  • 所有內(nèi)部排序算法的一個(gè)總結(jié)表格 簡(jiǎn)單選擇排序 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后...
    fredal閱讀 3,353評(píng)論 4 132

友情鏈接更多精彩內(nèi)容