1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
public class QuickSort { public static void main(String[] args) { int[][] data = {{1, 2}, {2, 3}, {4, 5}, {7, 9}, {0, 3}, {0, 1}, {1, 1}};
sort(0, data.length - 1, data); for (int i = 0; i < data.length; i++) { int[] tt = data[i]; for (int i1 = 0; i1 < tt.length; i1++) { System.out.print(tt[i1] + " "); } System.out.println(); } }
public static void sort(int start, int end, int[][] arr) { if (start >= end) { return; } int i, j; for (i = start + 1, j = end; i <= j; ) { if (distance(arr[start]) >= distance(arr[i])) { i++; } else { swap(i, j, arr); j--; } } swap(start, j, arr); sort(start, j - 1, arr); sort(j + 1, end, arr); }
public static void swap(int i, int j, int[][] arr) { int[] temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; }
public static int distance(int[] point) { return point[0] * point[0] + point[1] * point[1]; } }
|