本帖最后由 孙含庆 于 2012-10-9 01:17 编辑
class QuickSort {
public static void quickSort(int[] arr,int left,int right){
int middle,temp;
int i = left,j = right;
middle = (i+j)/2; //arr本身就是无序的,这里获取中间的角标要干什么,准备二分查找 ?
do{
while((arr-arr[middle])<0 && i<right) //还是do while 语句,一进来就移动i 和 j ,这是要干什么,编程思路都猜不透你
i++;
while((arr[j]-arr[middle])>0 && j>left)
j--;
if(i<=j) //二分查找的思路来排序怎么会排出来
{
temp = arr;
arr = arr[j];
arr[j] = temp;
i++;
j--;
}
}while(i<=j);
if(i<right)
quickSort(arr,i,right); //这里还递归了,不看了,看完就睡不着了
if(j>left)
quickSort(arr,left,j);
}
public static void main(String[] args) {
int[] arr = new int[]{22,11,44,66,88,33,0,22,55};
quickSort(arr,0,arr.length-1);
for(int i = 0;i<arr.length;i++)
System.out.println(arr);
}
} |