數(shù)據(jù)結(jié)構(gòu)與算法

1.線性結(jié)構(gòu)

線性結(jié)構(gòu)和非線性結(jié)構(gòu)主要看元素之間的關(guān)系,如果是一對(duì)一的關(guān)系則是線性表,不是一對(duì)一關(guān)系則是非線性表
線性表分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),例如棧和隊(duì)列

2.選擇排序的特殊性

  • 元素的比較次數(shù)與初始序列無(wú)關(guān)
  • 算法的時(shí)間復(fù)雜度與初始序列無(wú)關(guān)
    無(wú)論初始序列如何,都會(huì)將每一個(gè)元素與其他元素比較找出最大或最小

3.快速排序

找到一個(gè)支點(diǎn),將該序列位置整個(gè)調(diào)整一遍,左邊的元素都比支點(diǎn)小,右邊的元素都比支點(diǎn)大,支點(diǎn)不一定是左邊第一個(gè)數(shù),可以任意選擇

  • 初始數(shù)據(jù)有序時(shí),花費(fèi)的時(shí)間反而更多
    因?yàn)槿绻x取支點(diǎn)值為第一個(gè)數(shù)時(shí),相當(dāng)于每次分塊只減少了一個(gè)值,總時(shí)間為O(n2),排序有序數(shù)據(jù),花費(fèi)的時(shí)間反而更多

4.堆排序

堆排序的時(shí)間復(fù)雜度不會(huì)因?yàn)榇判蛐蛄械挠行虺潭榷淖?,都需要?gòu)造一個(gè)最大堆,并不斷進(jìn)行調(diào)整

5.希爾排序

希爾排序是插入排序的一種,是直接插入排序算法的一種更高效改進(jìn)版本

6.歸并排序

需要額外的內(nèi)存

7.穩(wěn)定排序和非穩(wěn)定排序

  • 穩(wěn)定排序:
    基數(shù)排序,冒泡排序,插入排序,歸并排序
  • 不穩(wěn)定排序
    堆排序,快速排序,希爾排序,選擇排序
最后編輯于
?著作權(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)容

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