更新時間:2021-10-08 11:01:15 來源:動力節(jié)點 瀏覽1404次
排序是指以特定格式排列數(shù)據(jù)。排序算法指定以特定順序排列數(shù)據(jù)的方式。最常見的順序是數(shù)字或字典順序。
排序的重要性在于,如果數(shù)據(jù)以排序方式存儲,則可以將數(shù)據(jù)搜索優(yōu)化到非常高的水平。排序還用于以更易讀的格式表示數(shù)據(jù)。以下是一些在現(xiàn)實生活場景中排序的例子 -
電話簿- 電話簿存儲按姓名排序的人的電話號碼,以便可以輕松搜索姓名。
字典- 字典按字母順序存儲單詞,以便搜索任何單詞變得容易。
排序算法可能需要一些額外的空間來比較和臨時存儲少數(shù)數(shù)據(jù)元素。這些算法不需要任何額外的空間,并且排序被稱為就地發(fā)生,或者例如在數(shù)組本身內(nèi)發(fā)生。這稱為就地排序。冒泡排序是就地排序的一個例子。
但是,在某些排序算法中,程序需要大于或等于被排序元素的空間。使用相等或更多空間的排序稱為非就地排序。合并排序是非就地排序的一個例子。
如果排序算法在對內(nèi)容進行排序后,不改變它們出現(xiàn)的相似內(nèi)容的順序,則稱為穩(wěn)定排序。
如果排序算法在對內(nèi)容進行排序后,改變了它們出現(xiàn)的相似內(nèi)容的順序,則稱為不穩(wěn)定排序。
當我們希望保持原始元素的序列時,算法的穩(wěn)定性很重要,例如在元組中。
如果排序算法利用要排序的列表中已經(jīng)“排序”的元素,則稱該排序算法是自適應(yīng)的。也就是說,如果源列表中的某些元素已經(jīng)排序,則在排序時,自適應(yīng)算法會考慮到這一點,并盡量不重新排序它們。
非自適應(yīng)算法是一種不考慮已經(jīng)排序的元素的算法。他們試圖強制每個元素重新排序以確認它們的排序。
在討論排序技術(shù)時通常會創(chuàng)造一些術(shù)語,這里是對它們的簡要介紹 -
如果連續(xù)元素大于前一個元素,則稱一系列值按遞增順序排列。例如,1、3、4、6、8、9 的順序是遞增的,因為每個下一個元素都大于前一個元素。
如果連續(xù)元素小于當前元素,則稱一系列值按降序排列。例如,9、8、6、4、3、1 是按降序排列的,因為每個下一個元素都小于前一個元素。
如果連續(xù)元素小于或等于序列中的前一個元素,則稱該值序列為非遞增順序。當序列包含重復(fù)值時會出現(xiàn)此順序。例如,9、8、6、3、3、1 是非遞增順序,因為每個下一個元素都小于或等于(在 3 的情況下)但不大于任何前一個元素。
如果連續(xù)元素大于或等于序列中的前一個元素,則稱該值序列為非遞減順序。當序列包含重復(fù)值時會出現(xiàn)此順序。例如,1、3、3、6、8、9 是非遞減順序,因為每個下一個元素都大于或等于(在 3 的情況下)但不小于前一個元素。
更多相關(guān)知識就在動力節(jié)點數(shù)據(jù)結(jié)構(gòu)教程,感興趣的小伙伴可以關(guān)注一下哦,希望對大家的學(xué)習(xí)能夠有所幫助。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743