數(shù)據(jù)結(jié)構(gòu)快速排序思想 快速排序算法的算法思想和步驟是什么??對比冒泡、選擇排序算法,該算法的優(yōu)點(diǎn)是什么?
快速排序算法的算法思想和步驟是什么??對比冒泡、選擇排序算法,該算法的優(yōu)點(diǎn)是什么?快速排序,也稱為分區(qū)交換排序1?;舅枷胍判虻挠涗洷灰淮闻判蚍殖蓛蓚€(gè)獨(dú)立的部分。如果一部分記錄的關(guān)鍵字小于另一部分的
快速排序算法的算法思想和步驟是什么??對比冒泡、選擇排序算法,該算法的優(yōu)點(diǎn)是什么?
快速排序,也稱為分區(qū)交換排序
1?;舅枷?/p>
要排序的記錄被一次排序分成兩個(gè)獨(dú)立的部分。如果一部分記錄的關(guān)鍵字小于另一部分的關(guān)鍵字,則可以對兩部分記錄進(jìn)行連續(xù)排序,以達(dá)到整個(gè)順序。
2. 實(shí)現(xiàn)邏輯
快速排序使用分治策略將一個(gè)列表分成兩個(gè)子列表。
①從序列中選擇一個(gè)元素,稱為“樞軸”
②重新排序序列。所有小于基準(zhǔn)值的元素都放在基準(zhǔn)的前面,所有大于基準(zhǔn)值的元素都放在基準(zhǔn)的后面(相同的數(shù)字可以到達(dá)任何一邊)。在分區(qū)退出后,基準(zhǔn)測試處于序列的中間。這稱為分區(qū)操作。
③對小于基值元素且大于基值元素的子序列進(jìn)行遞歸排序。
遞歸到底部,序列的大小為0或1,即已排序。這個(gè)算法一定會結(jié)束,因?yàn)樵诿看蔚?,它至少會把一個(gè)元素放到最后一個(gè)位置。
3. 與其他排序方法不同
與其他排序方法相比,快速排序具有排序速度快、局部排序等優(yōu)點(diǎn),使得快速排序在許多編程語言中用于實(shí)現(xiàn)內(nèi)部元素排序。
4. 動態(tài)圖形演示
1??焖倥判颍褐饕枷胧钦业揭粋€(gè)基準(zhǔn),將數(shù)據(jù)分成兩部分,然后迭代排序。請注意,所有元素都大于或小于基準(zhǔn)。不穩(wěn)定,位置的交換會導(dǎo)致相同的元素在位置前后交換。
哪種排序算法的效率最高?
快速排序的時(shí)間復(fù)雜度是nlogn(基于2的n×log的對數(shù))的擴(kuò)展:快速排序是冒泡排序的改進(jìn)??焖倥判蚴怯蒀.A.R.Hoare在1962年提出的。它的基本思想是用一步排序法將要排序的數(shù)據(jù)分成兩個(gè)獨(dú)立的部分,其中一部分的數(shù)據(jù)比另一部分的數(shù)據(jù)小。然后根據(jù)該方法對兩部分?jǐn)?shù)據(jù)進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,從而使整個(gè)數(shù)據(jù)成為一個(gè)有序的序列。各種排序方法的時(shí)間復(fù)雜度如下:
各種排序算法的復(fù)雜度?
快速排序鍵序列(66、13、51、76、81、26、57、69、23)。
查找第一個(gè)分區(qū)的結(jié)果。鍵序列遞增。第一個(gè)元素用作劃分基準(zhǔn)。兩個(gè)指針I(yè)和J分別指向表的開始和結(jié)束。重復(fù)以下兩個(gè)步驟:
1,J逐漸減小,并逐步比較J所指元素和目標(biāo)元素的大小。如果P(J)<T,則交換位置。
2. 如果P(I)>T,則交換位置。
直到I和J指向相同的值,循環(huán)結(jié)束。
快速排序是對冒泡排序的改進(jìn)。其基本思想是:首先,從序列中取一個(gè)數(shù)作為基數(shù),將數(shù)組中大于這個(gè)數(shù)的所有數(shù)放到右邊,小于或等于這個(gè)數(shù)的所有數(shù)放到左邊,然后對左右間隔重復(fù)第二步,直到每個(gè)間隔中只有一個(gè)數(shù)為止。
快速排序算法是冒泡排序的改進(jìn)。快速調(diào)度的基本思想是在基準(zhǔn)數(shù)據(jù)的基礎(chǔ)上,通過一次排序?qū)⒋判虻臄?shù)據(jù)劃分為兩個(gè)獨(dú)立的部分。
所有數(shù)據(jù)的一部分小于基準(zhǔn)數(shù)據(jù),另一部分大于基準(zhǔn)數(shù)據(jù),然后對兩部分?jǐn)?shù)據(jù)進(jìn)行遞歸快速排序,實(shí)現(xiàn)整個(gè)數(shù)據(jù)的有序排列。