- [font=arial, courier new, courier, 宋体, monospace, Microsoft YaHei][color=#333333]public class Test1 { public static void main(String[] args) { // 创建数组 int[] arr = { 7, 1, 6, 9, 2, 5, 3, 4, 8 }; // 调用快速排序方法 quickSort(arr, 0, 8); // 调用遍历数组方法 arrayPrint(arr); } // 遍历数组方法 public static void arrayPrint(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i != arr.length - 1) { System.out.print(arr[i] + ", "); } else { System.out.print(arr[i]); } } System.out.println("]"); } /*基准数归位的方法:将每次索引最小的的元素作为基准数,以此基准数为界将传入的数组分为两个子列, 基准数以左的都小于基准数,基准数以右的都大于基准数*/ public static int partition(int a[], int low, int height) { int key = a[low]; while (low < height) { //从最大索引处开始查找小于基准数的数据,查找到后赋给基准数 while (low < height && a[height] >= key) { height--; } a[low] = a[height]; //从最小索引处开始查找大于基准数的数据,查找到后赋值给上一步查找的小于基准数的数据 while (low < height && a[low] <= key) { low++; } a[height] = a[low]; } //实现本轮查找到的对应的大于和小于基准数数据的交换,并返回基准数的索引 a[low] = key; return low; } //快速排序的方法,使用了方法的递归 public static void quickSort(int a[], int low, int height) { if (low < height) { int result = partition(a, low, height); quickSort(a, low, result - 1); quickSort(a, result + 1, height); } }}[/color][/font]
复制代码
|
-
1.jpg
(70.45 KB, 下载次数: 44)
-
2.jpg
(48.83 KB, 下载次数: 32)
|