public static void shellSort() { int h = 1; while (randomNumbers.length > 3 * h + 1) { h = 3 * h + 1; } while (h >= 1) { for (int i = 0; i < h; i++) { // 内部就使用插入排序 for (int j = i, k = j + h; k < randomNumbers.length; j += h, k = j + h) { if (randomNumbers[j] > randomNumbers[j + h]) { for (int k2 = j + h; k2 >= h && randomNumbers[k2 - h] > randomNumbers[k2]; k2--) { int temp = randomNumbers[k2]; randomNumbers[k2] = randomNumbers[k2 - h]; randomNumbers[k2 - h] = temp; } } } } h = (h - 1) / 3; } } public static void quickSort() { quickSort(0, randomNumbers.length - 1); } public static void quickSort(int left, int right) { if (left >= right) { return; } else { int partition = partitionIt(left, right); quickSort(left, partition - 1); quickSort(partition + 1, right); } } public static int partitionIt(int left, int right) { int partition = right; for (int i = left; i < right; i++) { if (i > partition && randomNumbers[i] < randomNumbers[partition]) { int temp = randomNumbers[partition]; randomNumbers[partition] = randomNumbers[i]; randomNumbers[i] = temp; temp = partition; partition = i; i = temp; } else if (i < partition && randomNumbers[i] > randomNumbers[partition]) { int temp = randomNumbers[partition]; randomNumbers[partition] = randomNumbers[i]; randomNumbers[i] = temp; partition = i; } } return partition; }
转载于:https://www.cnblogs.com/yinqi/archive/2012/12/06/2805620.html
相关资源:JAVA上百实例源码以及开源项目