1.線性結(jié)構(gòu)
線性結(jié)構(gòu)和非線性結(jié)構(gòu)主要看元素之間的關(guān)系,如果是一對一的關(guān)系則是線性表,不是一對一關(guān)系則是非線性表
線性表分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),例如棧和隊(duì)列
2.選擇排序的特殊性
- 元素的比較次數(shù)與初始序列無關(guān)
- 算法的時(shí)間復(fù)雜度與初始序列無關(guān)
無論初始序列如何,都會(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)定排序
堆排序,快速排序,希爾排序,選擇排序