這篇文章給大家介紹ACwing中怎么實現(xiàn)歸并排序,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
在吳忠等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站設計制作、成都網(wǎng)站建設 網(wǎng)站設計制作按需定制制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,網(wǎng)絡營銷推廣,外貿(mào)網(wǎng)站制作,吳忠網(wǎng)站建設費用合理。
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; const int N=100010; int n; int a[N],t[N]; //歸并排序————分治的思想:左右兩段分別排序,再歸并。 //時間復雜度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; }
關于ACwing中怎么實現(xiàn)歸并排序就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
新聞標題:ACwing中怎么實現(xiàn)歸并排序
文章分享:http://bm7419.com/article6/gejcig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站收錄、小程序開發(fā)、企業(yè)建站、服務器托管、響應式網(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)