1234567891011121314151617181920212223242526272829303132 |
- class Util {
-
- // Swap two elements
- static void swap(int[] a, int i, int j) {
- int tmp = a[j];
- a[j] = a[i];
- a[i] = tmp;
- }
-
- // Insert a[i] into a[min..min+k]
- static void insertAt(int[] a, int min, int k, int i) {
- if (a[i] > a[min + k - 1]) {
- swap(a, i, min + k - 1);
- int j = min + k - 2;
- while (j >= min && a[j + 1] > a[j]) {
- swap(a, j + 1, j);
- j -= 1;
- }
- }
- }
-
- // Insertion sort from a[0] to a[k-1], biggest to smallest
- static void insertionSortReverse(int[] a, int min, int max) {
- for (int i = min + 1; i < max; ++i) {
- int j = i - 1;
- while (j >= min && a[j + 1] > a[j]) {
- swap(a, j, j + 1);
- j -= 1;
- }
- }
- }
- }
|