問題描述
在快速排序過程中, 每次會找乙個劃分值, 將小於劃分值的放到其左邊, 大於劃分值的
放右邊, 然後再依次遞迴左右兩邊, 對子序列進行同樣的操作, 直到子串行為空則停止操作。
最後就得到了有序的序列。
如何找到乙個合適的劃分值? 小茗同學也不知道, 所以他用了隨機演算法。 小茗同學的運
氣很好, 每次都剛好隨機到中位數, 但是他也不知道這個過程中使用到的劃分值都是多少。
所以你需要幫助小茗同學找出整個排序過程中, 用到的所有劃分值, 並按照其用到的順序輸
出。假定(1) 快速排序優先遞迴排序左邊序列, 然後才是右邊序列;
(2) 中位數定義為序列中的第⌈ n/2⌉ 大的數(n 表示序列長度, ⌈ ⌉ 表示向上取整) 。
如 3 4 1 的中位數是 3, 3 4 1 2 的中位數是 2;
★資料輸入
輸入的第一行為數字 n (1≤n≤10^5), 表示給定序列的長度。
第二行包含 n 個整數, 表示序列中的整數 a1,a2,...,an。 (1≤ai≤10^9)。 序列中的數互
不相同。
★資料輸出
在一行中依次輸出劃分值。
輸入示例
輸出示例
531 5 2 4
3 1 2 4 5
思路快排 二分
code
1 #include 2 #include 34void merge(int *p,int l,intr)5
13}1415
int cmp(const
void *a, const
void *b)
1619
20int
main()
2130 qsort(p,n,sizeof(int
),cmp);
31//
for(i=0;i32 merge(p,0,n-1
);33
34free
(p);
35return0;
36 }
資料結構 XingYunX 幸運兒
資料結構 xingyunx 幸運兒 問題描述 資料輸入 輸入第一行為乙個正整數 n。對於 50 的資料,1 n 1000 對於 80 的資料,1 n 6000 對於 100 的資料,1 n 1000000000 資料輸出 輸出 x。輸入示例 輸出示例5 5 輸入示例 輸出示例6 3 解題思路 思路1...
資料結構 資料結構緒論
資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...
資料結構 資料結構演算法
分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...