美文网首页
快速排序看这篇就够了(含图解)

快速排序看这篇就够了(含图解)

作者: 奋斗的韭菜汪 | 来源:发表于2022-04-19 13:46 被阅读0次

快速排序的思想总结:设定pivot,通过左右双指针与pivot进行比较,若发现左边大于pivot,右边小于pivot,则进行左右数字位置对调,最终最终保证数组靠左侧数值都小于povit,数组靠右侧数值都大于pivot。
设定头部数字8位pivot(可自由设定);

(图解如下)

快速排序算法图解.jpg image.png

编码:

public class QuickSort {

    public static void main(String[] args) {
        int[] array = new int[1000];
        for(int i = 0; i < array.length; i++){
            array[i] = (int)(Math.random() * 10000);
        }
        quickSort(array);
        for (int j = 0; j < array.length; j++){
            System.out.println(array[j]);
        }
    }

    public static void quickSort(int[] array){
        sort(array, 0, array.length -1);
    }

    public static void sort(int[] array, int start, int end){
        //这里需要注意,没有这个条件会进入死循环
        if (start >= end){
            return;
        }
        int pivot = array[start];
        int left = start;
        int right = end;
        while (left <= right){
            while (left <= right && array[left] < pivot){
                left++;
            }
            while(left <= right && array[right] > pivot){
                right--;
            }
            if(left <= right){
                int temp = array[left];
                array[left] = array[right];
                array[right] = temp;
                left++;
                right--;
            }
        }
        //每一轮排序结束时right < left
        sort(array, start, right);
        sort(array,left, end);
    }
}
  • 时间复杂度:O(nlogn)
  • 空间复杂度:快速排序使用递归,递归使用栈,因此它的空间复杂度为O(logn)
  • 稳定性:快速排序无法保证相等的元素的相对位置不变,因此它是不稳定的排序算法

相关文章

网友评论

      本文标题:快速排序看这篇就够了(含图解)

      本文链接:https://www.haomeiwen.com/subject/rsrsertx.html