博主头像
7024w的自留地

觉宇宙之无穷,识盈虚之有数

快排之单项扫描法

实际上就是利用递归、分治的思想将该数组不断进行划分排序。
每一次划分,都保证pivot左边都是小于它的数,右边都是大于它的数。
这样不断递归,确定每个位置上的pivot都符合要求,即可得到最终的结果。

无标题的笔记本 (1)-2.jpg
无标题的笔记本 (1)-2.jpg

无标题的笔记本 (1)-3.jpg
无标题的笔记本 (1)-3.jpg

static int[] QuickSort(int[] arr, int p, int r){
    if(p<r){
        int q = partition(arr,p,r);
        QuickSort(arr,p,q-1);
        QuickSort(arr,q+1,r);
    }
    return arr;
}
static int partition(int[] arr,int p,int r){
    int pivot = arr[p];
    int left = p+1;
    int right = r;
    int temp;
    while (left<=right){
        if(arr[left] <= pivot){
            left++;
        }else{
            if(arr[left] == arr[right]){
            }else{
                temp = arr[right];
                arr[right] = arr[left];
                arr[left] = temp;
            }
            right--;
        }
        System.out.println(Arrays.toString(arr));
    }
    temp = arr[p];
    arr[p] = arr[right];
    arr[right] = temp;
    return right;
}
发表新评论