兩個排序演算法的擴充套件應用

2022-02-04 16:23:01 字數 618 閱讀 2823

利用歸併和快排的思想

分別可以快速求解逆序對和第 \(k\) 大 (小 )數

時間複雜度分別為\(o(nlogn)\)和\(o(n)\)

\(mergesort\):

#includeusing namespace std;

const int n=1e5+10;

int n,a[n],b[n],ans;

void mergesort(int l,int r)

int main()

\(quicksort\):

#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的頭結點中值的大小,將小的值的結點...