Cod sursa(job #2972194)

Utilizator bigmixerVictor Purice bigmixer Data 28 ianuarie 2023 20:05:34
Problema Sortare prin comparare Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.23 kb
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

    public static void mergeSort(int l, int r, int[] a){
        if(l == r || l > r){
            return;
        }
        else{
            int mid = l + (r - l) / 2;
            mergeSort(l, mid, a);
            mergeSort(mid + 1, r, a);
            int b[] = new int[r - l + 1];
            int i1 = l, i2 = mid + 1, curr = -1;
            while(i1 <= mid || i2 <= r){
                if(i1 == mid + 1 || (i2 <= r && a[i2] <= a[i1])){
                    b[++curr] = a[i2++];
                }
                else{
                    b[++curr] = a[i1++];
                }
            }
            for(int i=l;i<=r;i++){
                a[i] = b[i - l];
            }
        }
    }

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(new File("src/algsort.in"));
        int n = sc.nextInt();
        int[] a = new int[n];
        for(int i=1;i<=n;i++){
            a[i - 1] = sc.nextInt();
        }
        mergeSort(0, n - 1, a);
        PrintWriter pr = new PrintWriter("algsort.out");
        for(int i=1;i<=n;i++){
            System.out.print(a[i - 1] + " ");
        }
    }
}