排序之快速排序

来源:互联网 发布:北京楼盘数据 编辑:程序博客网 时间:2024/06/06 07:43

Java代码:

package cho2;public class quickSort {public static void main(String[] args) {int[] numbers = { 10, 20, 15, 0, 6, 7, 2, 1, -5, 55 };System.out.print("排序前:");printArr(numbers);quick(numbers);System.out.print("快速排序后:");printArr(numbers);}public static int getMiddle(int[] numbers, int low, int high) {int temp = numbers[low]; // 数组的第一个作为中轴while (low < high) {while (low < high && numbers[high] > temp) {high--;}numbers[low] = numbers[high];// 比中轴小的记录移到低端while (low < high && numbers[low] < temp) {low++;}numbers[high] = numbers[low]; // 比中轴大的记录移到高端}numbers[low] = temp; // 中轴记录到尾return low; // 返回中轴的位置}public static void quick(int[] numbers) {if (numbers.length > 0) // 查看数组是否为空{quickSort(numbers, 0, numbers.length - 1);}}private static void quickSort(int[] numbers, int low, int high) {if (low < high) {int middle = getMiddle(numbers, low, high); // 将numbers数组进行一分为二quickSort(numbers, low, middle - 1); // 对低字段表进行递归排序quickSort(numbers, middle + 1, high); // 对高字段表进行递归排序}}public static void printArr(int[] numbers) {for (int i = 0; i < numbers.length; i++) {System.out.print(numbers[i] + ",");}System.out.println("");}}


0 0
原创粉丝点击