luogu1177 快排模板 二分排序詳解

2021-09-12 15:13:05 字數 1037 閱讀 6450

題目連線:該題是luogu試煉場的2-3:t1

題目大意:

1 給n個數字,要求按從小到大的順序排好,輸出;

解題思路:

1 主要是掌握二分排序的基礎原理:分治與函式的自我呼叫

2 請看下圖及講解:

1 當前 第x層 的比較:

1)每次的排序區域是[l,r],執行比較的游標x從l向右移動》,游標y從r向左移動<<,當y的時候,當前層的比較結束

2)x想右移必須滿足:a[x]

3)y想左移必須滿足:mid

y的時候,交換a[x]和a[y]的值,繼續進行當前層的比較

2 對於 第(x+1)層 需用分治的思想:

1)完成從左邊界到右游標的比較:[l,y];直到 l等於y

2)完成從左游標到右邊界的比較:[x,r];直到 x等於r

3 直到最後一層時候,所有的左邊界和右游標重合,左游標和右邊界重合,整個排序完成。

如果你真正能看懂以上的內容,是否就不需要上**了呢?(奸笑.jpg)

善良的ls,還是會給**的:

//luogu1177:快排模板題
//二分排序的思想理解

#includeint a[100000010];

int n;

void px(int l,int r) //二分排序模板

} //排好了當前的左右區間,進下一層的兩個區間排更小的

if(l

if(x

}int main()

模板題 快排 歸併 二分

include using namespace std const int n 1000010 int q n void quick sort int q,int l,int r quick sort q,l,j quick sort q,j 1,r intmain include using na...

快排和二分查詢

我只是課本的搬運工,做做筆記,當練打字也可以。這裡我把qsort放前面講是因為bsearch在使用之前需要對陣列進行排序,排完後才能進行查詢。老師說學了快排之後就不要用氣泡排序法和選擇排序法了,然而我選擇排序還不太會,找個時間整理整理吧。快速排序 qsort函式 標頭檔案 或 功能 對具有num個元...

POJ 2503 Babelfish 二分 快排

題目的意思 就像查詢一本字典,根據輸入的條目和要查詢的單詞,給出查詢結果 每個單詞長度不超過10 剛開始用stl裡面的map去做,結果華麗麗的tle了,用了快排和二分去做 include include include include include using namespace std cons...