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

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

作者: 奋斗的韭菜汪 | 来源:发表于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