題目連線:該題是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...