http://blog.csdn.net/pzhtpf/article/details/7560294java
基本思想:选择一个基准元素,一般选择第一个元素或者最后一个元素,经过一趟扫描,将待排序列分红两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,而后再用一样的方法递归地排序划分的两部分。web
public class kuaisu { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int arr[]={5,3,1,4,2,99,-1,65,32,44,9}; _quickSort(arr,0,arr.length-1); for(int k=0;k<arr.length;k++){ System.out.print(arr[k]+"_"); } System.out.print("\n"); } public static void _quickSort(int[] list, int low, int high) { if (low < high) { int middle = getMiddle(list, low, high); //将list数组进行一分为二 _quickSort(list, low, middle - 1); //对低字表进行递归排序 _quickSort(list, middle + 1, high); //对高字表进行递归排序 } } //得到中间位置 public static int getMiddle(int[] list, int low, int high) { int tmp = list[low]; //数组的第一个做为中轴 while (low < high) { while (low < high && list[high] >= tmp) { high--; } list[low] = list[high]; //比中轴小的记录移到低端 while (low < high && list[low] <= tmp) { low++; } list[high] = list[low]; //比中轴大的记录移到高端 } list[low] = tmp; //中轴记录到尾 return low; //返回中轴的位置 } }