Cod sursa(job #2063817)

Utilizator alexb97Alexandru Buhai alexb97 Data 11 noiembrie 2017 15:16:21
Problema Sortare prin comparare Scor 60
Compilator java Status done
Runda Arhiva educationala Marime 2.42 kb
import java.util.*;
import java.io.*;
import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args)
    {
        Scan cin;
        PrintWriter cout;
        try
        {
            cin = new Scan("algsort.in");
            cout = new PrintWriter("algsort.out");

            int n = cin.nextInt();
            //cout.println(n);
            int x;
            int arr[] = new int[500001];
            for(int i = 0; i < n; ++i)
            {
                x = cin.nextInt();
                arr[i] = x;
            }
            quickSort(arr, 0, n-1);
            for(int i = 0; i < n; ++i)
            {
                cout.print(arr[i] + " ");
            }
            cin.close();
            cout.close();

        }
        catch (Exception ex)
        {
            System.out.println(ex.toString());
        }

    }

    static int partition(int arr[], int left, int right)
    {
      int i = left, j = right;
      int tmp;
      int pivot = arr[(left + right) / 2];

      while (i <= j) {
            while (arr[i] < pivot)
                  i++;
            while (arr[j] > pivot)
                  j--;
            if (i <= j) {
                  tmp = arr[i];
                  arr[i] = arr[j];
                  arr[j] = tmp;
                  i++;
                  j--;
            }
      };

      return i;
    }

    static void quickSort(int arr[], int left, int right) {
          int index = partition(arr, left, right);
          if (left < index - 1)
                quickSort(arr, left, index - 1);
          if (index < right)
                quickSort(arr, index, right);
    }

    public static class Scan {
        private BufferedReader bufferedReader;
        private StringTokenizer stringTokenizer;

        Scan(String filename) throws FileNotFoundException
        {
            bufferedReader = new BufferedReader(new FileReader(filename));
        }
        private String next() throws IOException
        {
            while(stringTokenizer == null || !stringTokenizer.hasMoreElements())
            {
                stringTokenizer = new StringTokenizer(bufferedReader.readLine());

            }
            return stringTokenizer.nextToken();
        }
        int nextInt() throws IOException
        {
            return Integer.parseInt(next());
        }
        void close() throws IOException
        {
            bufferedReader.close();
        }
    }
}