1 //2012-07-16 2 void quickSort(element list[], int left, int right)//快速排序 3 { 4 int i=left; 5 int j=right; 6 7 if(i >= j) //判断需要itemp)//需要i =j)39 return;40 41 element pivot=list[i];42 element temp;43 j++;//以下i++,j--了一次,i是需要首先+1,但j不需要,所以此处需要提前+1,抵消44 45 do{46 do{47 i++;48 }while( list[i] pivot);//不需要i pivot,a[j] pivot所以交换left和j,62 //特殊情况结束时left......right,i=j=right+1//1,2,3,4,5,6,763 //即结束时,i后的都大于pivot,j前的都小于pivot,其中[j] pivot 64 list[left]=list[j];65 list[j]=pivot;66 67 quickSort(list,left,j-1);68 quickSort(list,j+1,right);69 70 }
下面的是对quickSort方法的修改:
删除了quickSort的18、24行,以及27、29、30进行对应修改。修改之后使得如下代码运行到23行时,i=j,这样思维更清晰。
1 void quickSort3(element list[], int left, int right)//快速排序,修改时间2012-09-18 16:40:40 2 { 3 int i=left; 4 int j=right; 5 6 if(i >= j) //判断需要itemp)//需要i