java兑现快速排序
java实现快速排序
/** * 快速排序 * @author zhoujianghai * zhoujiangbohai@163.com */ public class QuickSort { /** * @param args */ public static void main(String[] args) { int data[] = {12,34,56,7,78,345,5,6,890}; System.out.print("排序前:"); for(int i : data) { System.out.print(" "+i); } quickSort(data,0,data.length - 1); System.out.println(); System.out.print("排序后:"); for(int i : data) { System.out.print(" "+i); } } public static void quickSort(int[] data, int low, int high) { int i = low; int j = high; if(low < high) { //key:作为比较的元素 int key = data[low]; // 从数组两端交替地向中间扫描;i从左边开始,j从右边开始 while (i < j) { while (i < j && data[j] > key) {//从右边查找 j--; } if (i < j) { //找到比key小的,移动到左边 data[i] = data[j]; i++; } while (i < j && data[i] < key) {//从左边查找 i++; } if (i < j) { // 找到比key大的,移动到右边 data[j] = data[i]; j--; } } //key移动到正确位置 data[i] = key; // 前半部分递归排序 quickSort(data,low, i - 1); // 后半部分递归排序 quickSort(data,i + 1,high); } } }