快速排序
易错点:
一定要从右边界开始减少
因为如果是从l++的话 如果第一个数字就是最小的数字的话 会把最小的数字切换到中间去 例如
1 6 5 5
就会变成
6 1 5 5
public static void quickSort(int [] array,int left,int right)
{
if (array==null||array.length==0||left>right)
return ;
int key=array[left];
int l=left;
int r=right;
while (l!=r)
{
while (array[r]>=key&&l<r)
{
r--;
}
while (array[l]<=key&&l<r)
{
l++;
}
if (l<r)
{
int temp=array[l];
array[l]=array[r];
array[r]=temp;
}
}
array[left]=array[l];
array[l]=key;
quickSort(array,left,l-1);
quickSort(array,l+1,right);
}