超快的排序——
n種答法
眾所周知,在oj裡乙個重要的演算法是排序
入門級的:冒泡、選擇、箱、插入
高階級的:快速、歸併、堆、桶
當遇到比較大的資料要排序時,入門級大多都不管用了
冒泡、選擇超過時間限制
箱超過空間限制
插入還需要練得恰到好處並且找規律
否則也會超過時間限制
那麼這裡分享兩種排法
目錄
1.歸併排序
2.堆排序
1.歸併排序
思路:歸併排序的基本條件是將兩個有序序列合併
那麼怎麼找到兩個有序序列呢?
我們可以用遞迴二分的方法
當乙個序列只有乙個元素時
預設它是有序的
然後回到這個回溯的過程
將兩個有序序列合併
最終合併成乙個有序序列
將答案輸出
#includeusing namespace std;
int a[100005],c[100005];
void merge(int l,int r)
else//否則取後面
s++;
}while(x<=mid)//如果前面還有未取的全部放到後面
while(y<=r)//如果不是前面就是後面
for(int i=l;i<=r;i++) a[i]=c[i];//把c陣列賦值回a陣列
}int main()
void down(int x)
}int main(int argc, char** ar**)
for(i=n;i>1;i--)
for(i=1;i<=n;i++) cout《不見不散,咱們下期再見~~
站長的N種死法
建 不易,做站長就更難。站長之路辛苦而漫長,正所謂 站長之路漫漫其修遠兮,吾將上下而求索 要當站長,就要了解其路的艱辛以及各種風險,現在總結站長之路將會遇到的各種生命危險,與各位共勉之。一 建站之初。1 初遇無良空間商,一天中25小時無法訪問,三公升而死。2 谷歌到處逛,只為尋一負責空間商,苦苦搜尋...
排序 快排的兩種寫法
之前的部落格記錄過各種排序 快排演算法 如下,該方法思路很直接也很清晰,但是在生成left和right時會需要新的空間,所以其空間複雜度要高一些。def quick sort li if len li 2 return li tmp li 0 快排中將序列分為左右的值 left x for x in...
超詳細的氣泡排序法 (一學必會)
最近很多剛入門的道友在詢問資料排序的問題,在這裡,我也詳細給大家寫一寫,非常適合初學者,希望能對你有所幫助。常用的資料排序的方法有 氣泡排序法 插入排序法 選擇排序法 快速排序法 歸併排序 堆排序 希爾排序等!由於篇幅過長,因此,分開講解!1 氣泡排序 bubble sort 冒泡法排序的基本思想 ...