這篇文章給大家介紹ACwing中怎么實現(xiàn)歸并排序,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在吳忠等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營銷推廣,外貿(mào)網(wǎng)站制作,吳忠網(wǎng)站建設(shè)費用合理。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=100010;
int n;
int a[N],t[N];
//歸并排序————分治的思想:左右兩段分別排序,再歸并。
//時間復(fù)雜度O(nlogn)
void merge_sort(int a[],int l,int r){
//邊界
if(l>=r) return;
//分治 排序
//確定一個分界點
int m=(l+r)>>1;
//對左半邊排序
merge_sort(a,l,m);
//對右半邊排序
merge_sort(a,m+1,r);
//歸并
int i=l,j=m+1;
int k=0;
while(i<=m&&j<=r){
if(a[i]<=a[j]) t[k++]=a[i++];
else t[k++]=a[j++];
}
//剩下的段補上
while(i<=m) t[k++]=a[i++];
while(j<=r) t[k++]=a[j++];
//搞回去
for(int i=l,j=0;i<=r;i++,j++) a[i]=t[j];
}
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
merge_sort(a,0,n-1);
for(int i=0;i<n;i++) cout<<t[i]<<' ';
return 0;
}關(guān)于ACwing中怎么實現(xiàn)歸并排序就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
新聞標題:ACwing中怎么實現(xiàn)歸并排序
文章分享:http://chinadenli.net/article6/gejcig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站收錄、小程序開發(fā)、企業(yè)建站、服務(wù)器托管、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)