int i = 0; //i的初始位置
int j = arr1.length - 1; //j的初始位置
while(i != j){ //当i与j不指向一个位置的时候
  if(i < j){ //当i<j时,当arr1[i]>arr1[j]交换arr1[i],arr1[j]的值
  if(arr1[i] > arr1[j]) {
  int tmp1 = arr1[i];
  arr1[i] = arr1[j];
  arr1[j] = tmp1;
  int tmp2 = i; //i换到j的位置,j换到i+1的位置  
  i = j;
  j = tmp2 + 1;
  }else {
  j--; //如果arr[i]>arr[j],j向前移动一个位置
  }
  }.....
.....
.....
比如说数组{49, 38, 65, 97, 76, 13, 27}
上面程序
已经排出{27,38,13,49,76,97,65}
然后在讲前面三个数快排,后三个数快排,怎么写代码?
这个快排解释是我在百度上搜的。

解决方案 »

  1.   

    http://wenku.baidu.com/view/a61d9d6427d3240c8447ef6f.html
      

  2.   

    我给你写出来吧,刚才我在打dota,所以...啊哈哈java代码如下,比如说最简单的情况,对10个数快速排序:
    public class QuickSort {

    int arr[] = {1024,1,2,5,3,7,6,2,9,5}; public static void main(String args []){
    new QuickSort().launch();
    }

    public void launch(){
    //before quicksort
    for (int i=0;i<10;++i){
    System.out.print(arr[i]+"  ");
    }
    System.out.println();
    quickSort(arr,10);
    //after quicksort
    for (int i=0;i<10;++i){
    System.out.print(arr[i]+"  ");
    }
    }

    //partition method, obtain the mid index
    public int partition(int []arr, int left, int right){
    int key = arr[left];
    int i = left;
    for (int j=i+1;j<=right;++j){
    if (arr[j]<key){
    int temp = arr[i+1];
    arr[i+1] = arr[j];
    arr[j] = temp;
    ++i;
    }
    }
    int temp = arr[i];
    arr[i] = arr[left];
    arr[left] = temp;
    return i;
    }

    //package method of quickSort()
    public void quickSort(int []arr, int size){
    quickSort(arr,0,size-1);
    }

    //recursion calls of quickSort
    public void quickSort(int []arr, int left, int right){
    if (left>=right) return;
    int mid = partition(arr,left,right);
    quickSort(arr,left, mid);
    quickSort(arr,mid+1,right);
    }
    }