超快排序的N種答法

2021-09-12 06:43:45 字數 911 閱讀 5101

超快的排序——

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 冒泡法排序的基本思想 ...