2149 wjw的排序 歸併排序初步認識

2021-08-21 12:58:20 字數 1139 閱讀 3901

今天有個神奇的題

description

菜雞wjw覺得最近對排序演算法的理解又上了乙個檔次,於是準備研究一下自己會的所有排序演算法,經過測試,他寫的所有**裡最快的只有一句話」std::sort(a,a+len)」,於是他終於發現自己依舊是個菜雞…

那麼問題來了,如果不用」std::sort()」,你能寫出什麼樣的排序**呢?

input

一組資料,第一行乙個n表示序列長度(1<=n<=3000000)

第二行包含n個數字,用空格隔開

output

公升序排序後的結果,用空格隔開,末尾沒有空格

sample input

5 1 3 2 4 5

sample output

1 2 3 4 5

分析:本題主要問題在於其最大資料數量

長度(1<=n<=3000000)

在這樣的數量下,一般的冒泡和選擇排序也是只能自嘆不如,畢竟速度不夠肯定tle;而桶排序看到這種東西也是沒什麼辦法,畢竟數量太大.這時新的歸併排序和快速排序出現了.

code:

#include int a[3001000];

int c[3001000];

void merge_sort(int l,int r)

else

}for (;i<=mid;i++)

for (;j<=r;j++)

for (int ii = l; ii <= r ;ii++)

a[ii] = c[ii - l];

}int main()

return 0;

}

以上原始碼基本就是歸併排序的基本思路了.實則快排和歸併沒有太大區別,只是前者是想分再排,後者是先排再分..基本思路就是分組排序.

如圖:

歸併其實就是乙個分組,排序再合併的過程.由於其分組排序,效率大大提高.

zcmu 2149 wjw的排序問題(歸併排序)

題目 時間限制 1 sec 記憶體限制 128 mb 提交 48 解決 12 提交 狀態 討論版 菜雞wjw覺得最近對排序演算法的理解又上了乙個檔次,於是準備研究一下自己會的所有排序演算法,經過測試,他寫的所有 裡最快的只有一句話 std sort a,a len 於是他終於發現自己依舊是個菜雞.那...

zcmu 2149(歸併排序)

time limit 1 sec memory limit 128 mb submit 58 solved 18 submit status web board 菜雞wjw覺得最近對排序演算法的理解又上了乙個檔次,於是準備研究一下自己會的所有排序演算法,經過測試,他寫的所有 裡最快的只有一句話 st...

Go初接觸之歸併排序

剛開始接觸go語言,有些不適應,整體和c有些相像,所以學起來也不太困難,但是剛接觸也感覺到了go在很多方面的強大。掌握了go的基本語法,簡單寫個歸併排序練習一下 1 package main23 import 4 fmt 5 67func hebing arr int8,left int8,mid ...