- 简单思想:利用分治法,默认取数组第一个元素作为参考点,以参考点为例,把数组分成一半小于参考点,另一半大于参考点。以原始数据为例4,1,2,5,9,6,7,第一次排序为4,1,2,5,9,6,7,再用相同的方法,对5左边进行排序,对5右边进行排序。
- 代码实现
public class Test6 {
public static void main(String[] args) {
int[] num={4,1,2,5,9,6,7};
quicksort(num,0,num.length-1);
for(int i=0;i<num.length;i++)
{
System.out.print(num[i]+" ");
}
}
private static void quicksort(int[] num, int i, int j) {
if (i<j) {
int key=num[i];
int left=i;
int right=j;
while (left<right) {
while(left<right&&num[right]>key)
{
right--;
}
if (left<right) {
num[left]=num[right];
left++;
}
while(left<right&&num[left]<key)
{
left++;
}
if (left<right) {
num[right]=num[left];
right--;
}
}
num[left]=key;
quicksort(num, i, left-1);
quicksort(num, left+1, j);
}
}
}