快速排序原理:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的右边或左边,再对左右两边分别用同样的方法处之直到每一个待处理的序列的长度为1, 处理结束。
java实现代码:
public static int[] QuickSort(int array[], int left, int right)
{
if (left>=right)
return null;
int i=left;
int j=right;
//选取基准值为数组第一位
int key=array[left];
while(i<j)
{
//向前寻找一个比key小的数
while(i<j&&key<=array[j])
j--;
//找到这个数将其赋给array[i]
array[i]=array[j];
//向后寻找一个比key大的数
while(i<j&&key>=array[i])
i++;
array[j]=array[i];
}
array[i]=key;
//循环结束时i=j 此时把key赋给array[i]
//这一次循环结束后将小于key的数字都放在了左边 大于key的数字都放在了右边
//但左右还是无序状态 所以还需要通过递归将两边的无序数据进行排序
QuickSort(array,left,i-1);
QuickSort(array,i+1,right);
return array;
}
public static void main(String [] args)
{
int [] array={5,3,7,6,4,1,0,2,9,10,8};
array=QuickSort(array,0,10);
for (int k = 0; k <array.length ; k++) {
System.out.println(array[k]);
}
}