日期:2014-05-20 浏览次数:20668 次
package xxx.yyy.zzz.tst; import java.util.Random; public class MySortMethodTst { /** * @param args */ public static void main(String[] args) { int[] array = new int[100]; Random random = new Random(); /* load some random values into the array */ for (int i = 0; i < 100; i++) { array[i] = random.nextInt() % 100; } /* print the original array */ System.out.println("===***=== Before sorting: "); for (int i = 0; i < array.length; i++) { System.out.printf(" %d ", array[i]); } System.out.println(); // use mySortMethod mySortMethod(array, 0, array.length - 1); System.out.println("===***=== After sorting: "); for (int i = 0; i < array.length; i++) { System.out.printf(" %d ", array[i]); } System.out.println(); } /* sort everything in between lowIndex and highIndex */ private static void mySortMethod(int[] arrayToSort, int lowIndex, int highIndex) { int i = lowIndex; int j = highIndex; int y = 0; /* compare value */ int z = arrayToSort[(lowIndex + highIndex) / 2]; /* partition */ do { /* find member above ... */ while (arrayToSort[i] < z) i++; /* find element below ... */ while (arrayToSort[j] > z) j--; if (i <= j) { /* swap two elements */ y = arrayToSort[i]; arrayToSort[i] = arrayToSort[j]; arrayToSort[j] = y; i++; j--; } } while (i <= j); /* recurse */ if (lowIndex < j) mySortMethod(arrayToSort, lowIndex, j); if (i < highIndex) mySortMethod(arrayToSort, i, highIndex); } }