今天有個神奇的題
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 ...