菜单

快速排序

duckflew
发布于 2020-10-20 / 194 阅读
0
0

快速排序

快速排序

易错点:
一定要从右边界开始减少
因为如果是从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);
   
    }

评论