1. 程式人生 > >藍橋杯:交叉排序(java直接排序實現)

藍橋杯:交叉排序(java直接排序實現)

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]+" ");
        }
    }
}