利用歸併和快排的思想
分別可以快速求解逆序對和第 \(k\) 大 (小 )數
時間複雜度分別為\(o(nlogn)\)和\(o(n)\)
\(mergesort\):
\(quicksort\):#includeusing namespace std;
const int n=1e5+10;
int n,a[n],b[n],ans;
void mergesort(int l,int r)
int main()
我們仍未知道那天所聽說的排序演算法的名字#includeusing namespace std;
const int n=1e4+10;
int t[n],a[n],n,k,ans;
void quicksort(int l,int r)
if(l>r)return;
int i=l,j=r,res=a[l];
while(ires)j--;
if(ik)quicksort(l,i-1);
else quicksort(i+1,r);
}int main()
兩個排序演算法
然後貼 1 int num 10 2 time t tms 3 srand unsigned int time tms 生成種子 4for int i 0 i 10 i 生成陣列元素為10 的陣列59 1011 氣泡排序 12for int i 0 i 10 1 i 1324 25 1 int nu...
兩個排序演算法比較
一.起泡法排序 起泡法排序 掌握兩個重點,1 n個數排序需要進行n 1趟排序 2 第j趟排序需進行n j次比較 交換 程式如下 定義一維陣列,這裡a 0 不用,儲存a 1 a 5 共5個元素,因此n為5.include main for i 1 i 5 i printf n d a i 上述程式中,...
演算法 合併兩個排序的鍊錶
題目 輸入兩個遞增排序的鍊錶,合併著兩個鍊錶並使新鍊錶中的結點仍然是按照遞增順序的。例如輸入的鍊錶1和鍊錶2如下,合併後的為鍊錶3。鍊錶的結點定義如下 解題思路 首先可以確定的是,鍊錶1和鍊錶2本身就是遞增的,所以合併的過程可以從鍊錶1,2的頭結點開始,先比較1,2的頭結點中值的大小,將小的值的結點...