藍橋杯:交叉排序(java直接排序實現)
阿新 • • 發佈:2018-12-13
package lanqiaobei; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /* 練習題:交叉排序 蒜頭君很無聊,現在有 N 個數,其中第 i(1≤i≤N) 個數是 Ai。 現在他先將 Al1,Al1+1...Ar1從小到大排序。 再將 Al2,Al2+1...Ar2 從大到小排序。 請輸出 A 排序後的最終結果。 輸入格式 第一行五個整數 N,l1,r1,l2,r2(l1<r1,l2<r2),均不超過 100000。 第二行 N 個不超過 int 範圍的整數,表示 A 陣列。 輸出格式 一行 N 個用空格分隔的整數,表示 A 排序以後的結果。 樣例輸入 6 1 3 2 4 8 3 1 6 9 2 樣例輸出 1 8 6 3 9 2 */ public class CrossSort { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int l1=sc.nextInt(); int r1=sc.nextInt(); int l2=sc.nextInt(); int r2=sc.nextInt(); int[] res=new int[n]; for (int i = 0; i <n ; i++) { res[i]=sc.nextInt(); } //運用直接排序進行排序 for (int i = l1-1; i <r1-1; i++) { for (int j = i+1; j <r1 ; j++) { if (res[j]<res[i]){ int m=res[j]; res[j]=res[i]; res[i]=m; } } } for (int i = l2-1; i <r2-1 ; i++) { for (int j = i+1; j <r2 ; j++) { if (res[j]>res[i]){ int m=res[j]; res[j]=res[i]; res[i]=m; } } } for (int i = 0; i <n ; i++) { System.out.print(res[i]+" "); } } }