Advertisement
Guest User

Untitled

a guest
Mar 6th, 2015
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. class MaxNum {
  4.  
  5.     public int[] arr;
  6.  
  7.     public void GetMaxNum() {
  8.         char[][] numArr = new char[arr.length][];
  9.         for (int i = 0; i < arr.length; i++) {
  10.             numArr[i] = ("" + arr[i]).toCharArray();
  11.         }
  12.         QuickSort(arr.length, numArr);
  13.         for (int i = 0; i < arr.length; i++) {
  14.             System.out.print(numArr[i]);
  15.         }
  16.     }
  17.  
  18.     public void QuickSort(int n, char[][] arr) {
  19.         QuickSortRec(0, n - 1, arr);
  20.     }
  21.  
  22.     public void QuickSortRec(int low, int high, char[][] arr) {
  23.         if (low < high) {
  24.             int q = Partition(low, high, arr);
  25.             QuickSortRec(low, q - 1, arr);
  26.             QuickSortRec(q + 1, high, arr);
  27.  
  28.         }
  29.  
  30.     }
  31.  
  32.     public int Partition(int low, int high, char[][] arr) {
  33.         int i = low;
  34.         int j = low;
  35.         while (j < high) {
  36.             int k = 0;
  37.             while (arr[j].length > k && arr[high].length > k) {
  38.                 if (arr[j][k] > arr[high][k]) {
  39.                         char[] t = arr[i];
  40.                         arr[i] = new char[arr[j].length];
  41.                         arr[i] = arr[j];
  42.                         arr[j] = new char[t.length];
  43.                         arr[j] = t;
  44.                         i++;
  45.                         break;
  46.                 } else {
  47.                     if(arr[j][k] < arr[high][k]) {
  48.                         break;
  49.                     }
  50.                 }
  51.                 if ((arr[j].length == k+1 || arr[high].length == k+1) && ((int) arr[j][k] - (int) '0' == (int) arr[high][k] - (int) '0')
  52.                         && ((arr[high].length == (k + 1)
  53.                         && arr[j].length > arr[high].length && arr[j][k + 1] != '0') || (arr[j].length == (k + 1)
  54.                         && arr[high].length > arr[j].length && arr[high][k + 1] == '0')))
  55.                 {
  56.                     char[] t = arr[i];
  57.                     arr[i] = new char[arr[j].length];
  58.                     arr[i] = arr[j];
  59.                     arr[j] = new char[t.length];
  60.                     arr[j] = t;
  61.                     i++;
  62.                     break;
  63.                 }
  64.                 k++;
  65.             }
  66.             j++;
  67.         }
  68.  
  69.         char[] t = arr[i];
  70.         arr[i] = new char[arr[high].length];
  71.         arr[i] = arr[high];
  72.         arr[high] = new char[t.length];
  73.         arr[high] = t;
  74.         return i;
  75.     }
  76.     public static void main(String[] args) {
  77.         MaxNum p = new MaxNum();
  78.         Scanner in = new Scanner(System.in);
  79.         int n = in.nextInt();
  80.         p.arr = new int[n];
  81.         for (int i = 0; i < n; i++) {
  82.             p.arr[i] = in.nextInt();
  83.         }
  84.         p.GetMaxNum();
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement