算法思想:

1.確定分界點
2.遞歸排序
3.歸并(合二為一)

bufferedReader代替Scanner進行寫入 (快10倍以上)

spilt(“ ”)方法(以“ ”中的內(nèi)容為分割)

代碼:
package acwing.basic01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MergeSort{
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String str = input.readLine();
int n = Integer.parseInt(str);
int[] p = new int[n];
for (int i=0;i=r) return;
//選擇數(shù)組坐標的中位數(shù)
int mid = (l+r)>>1;
//遞歸排序
// (整個遞歸執(zhí)行過程是一棵二叉樹,
// 先會遞歸到整棵樹的底部,
// 底部只有一個節(jié)點一定有序,
// 然后在回溯時不斷合并相鄰兩個區(qū)間
// ,每次合并之后都會將合并之后的區(qū)間排好序。
// 那么當合并到根節(jié)點時,整個區(qū)間就有序了。)
merge_sort(p,l,mid);
merge_sort(p,mid+1,r);
//開始歸并排序
int k = 0;
//開辟輔助數(shù)組,大小是右下標-左下標+1
int temp[] = new int[r-l+1];
int i = l;
int j = mid+1;
while ( i<=mid && j<=r){
if ( p[i] >p[j] ){
temp[k] = p[j];
j++;
k++;
}
else {
temp[k] = p[i];
i++;
k++;
}
}
while (i<=mid){
temp[k++] = p[i++];
}
while (j<=r){
temp[k++] = p[j++];
}
for (i = l, j = 0;i<= r;i ++,j++){
p[i] = temp[j];
}
}
} 你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:AcWing算法基課basic02歸并排序------java版-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://www.chinadenli.net/article44/djdgee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站維護、網(wǎng)站改版、域名注冊、云服務器、品牌網(wǎng)站設(shè)計
聲明:本網(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)