Cod sursa(job #1925270)

Utilizator rptomaToma Radu-Petrescu rptoma Data 12 martie 2017 20:05:00
Problema Sortare Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.63 kb
package com.company;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void swap(int[] v, int p1, int p2) {
        int aux = v[p1];
        v[p1] = v[p2];
        v[p2] = aux;
    }

    public static int lemuto(int[] v, int st, int dr) {
        Random r = new Random(System.currentTimeMillis());
        int randomPivot = st + Math.abs(r.nextInt()) % (dr - st + 1);
        swap(v, randomPivot, dr);
        int pIndex = st;
        for (int i=st ; i < dr; i++) {
            if (v[i] <= v[dr]) {
                swap(v, i, pIndex);
                pIndex++;
            }
        }

        swap(v, dr, pIndex);

        return pIndex;
    }

    public static void quickSort(int[] v, int st, int dr) {
        if (st < dr) {
            int pIndex = lemuto(v, st, dr);
            quickSort(v, st, pIndex - 1);
            quickSort(v, pIndex, dr);
        }
    }

    public static void main(String[] args) {
        Scanner f = null;
        try {
            f = new Scanner(new File("sortare.in"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        int n = f.nextInt();
        int[] v = new int[n];
        for (int i=0; i<n; i++) {
            v[i] = f.nextInt();
        }

        quickSort(v, 0, v.length - 1);

        PrintWriter g = null;
        try {
            g = new PrintWriter("sortare.out");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        for(int i=0; i<v.length; i++) {
            g.print(v[i] + " ");
        }
    }
}