java实现快速排序
对于快速排序,课堂上当时就没理解,今天看了一下,大概可以写出来了
思想:找一个元素作为基准数,然后从数组前后两边取出元素和基准数基表,从后面找到比基准数小的数,下标i,从前边找到比基准数大的数,下标j,然后两数交换,过程中判断并保证i<j;
这样继续循环下去,当i=j时停止,此时第一轮操作结束,更新基准数:把当前基准数和停止数即下标为i的书交换,此时可以保证,除新的基准数外,下标为i的数比前边的数大,比后边的数小;
接下来用递归对前后两部分分别做以上操作。
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
int [] array; public void quickSort(int left,int right){ if(left >right){ return; } int i,j,temp,base; i = left; j = right; base = array[i]; while(i != j){ while(array[j]>=base&&i<j){ j--; }while(array[i]<=base&&i<j){ i++; } if(i<j){ temp = array[i]; array[i] = array[j]; array[j] = temp; } } array[left] = array[i]; array[i]=base; quickSort(left, i-1); quickSort(i+1, right); }
输入数组:9,8,7,6,5,4,3,2,1
输出结果:1,2,3,4,5,6,7,8,9