下屬專案
測試用例數量
什麼是雙調排序無0
雙調排序怎麼實現無1
雙調排序是基於四元素排序發展起來的一種排序方法,單純的雙調排序適用於2的冪次方個元素的序列的排序。而選擇排序和氣泡排序都屬於三元素排序。
四元素排序的思想是這樣的,比如說有(3,2,1,4)這乙個序列,我們要按照從小到大(公升序)的順序來排序。
(3,2,1,4)–>(2,3)(4,1)–>(2,1)(4,3)–>(1,2)(3,4)。
以上過程可總結為這樣的規律(實現整體公升序):
第一步,序列等分,第一部分公升序,第二部分降序;
第二步,兩個子串行對應元素比較互換;
第三步,對兩個子串行均公升序排序。1
經過個人的思考,我認為原理可用下圖表示:
第一步的公升序和降序是為了找出乙個等位值,第二步把兩個子串行對應位置的元素進行比較,找到這個等位值,把小於等位值的交換到第乙個子串行,大於等位值的交換到第二個子串行,所以第三步中只需要分別對子序列進行排序即可實現整體的排序。
#include
#include
#define up 1
#define down 0
int a[8]
=;void
compare
(int
*a,int
*b,int type)
}else
if(type == down)
}else
printf
("err,type\n");
}void
sort
(int
*a,int num,
int type)
void
main()
**中sort()函式中的注釋:公升與降對應第一步,中間過程對應第二步,公升與公升對應第三步。2
如果本文對你有幫助,不如請我一罐可樂吧 ?
什麼是雙調排序
雙調排序怎麼實現
方法基於《gpu高效能計算之cuda》–5.1.1. ↩︎
程式改進自《gpu高效能計算之cuda》–p191. ↩︎
快速排序思想及C 實現
ste p1.step 1.step1.通過一趟排序把資料分成兩部分,其 中 color 其中一部分的所有資料都要比另一部分的所有資料小,基準資料 稱為樞軸 排在這兩個子串行的中間 s te p2.step 2.step2.對這兩個子串行遞 歸 color 遞迴地呼叫排序演算法 int partit...
希爾排序思想及實現
希爾排序以插入排序為基礎,不同的或者說改進的地方是,插入排序或者其它排序解決不了資料太大的陣列,那樣會非常費時,而如果讓插入排序在乙個乙個向前插入之前使其部分有序,即讓它先以h的間隔有序,最後再執行一次插入排序會不會更快呢?答案是會的。1 主要思想 以上面說的為例,讓陣列以h為間隔進行插入排序,h ...
雙調排序高階 對任意長度的序列排序(C語言)
下屬專案 測試用例數量 雙調排序回顧 高階無0 高階雙調排序怎麼實現無1 雙調排序是基於四元素排序發展起來的一種排序方法,單純的雙調排序適用於2的冪次方個元素的序列的排序。而選擇排序和氣泡排序都屬於三元素排序。四元素排序的思想是這樣的,比如說有 3,2,1,4 這乙個序列,我們要按照從小到大 公升序...