QuickSort

package Java;

public class QuickSort {
    /**
     * 时间复杂度O(nlogn)
     * 空间复杂度O(logn)递归需要栈的辅助
     * 最坏时间复杂度O(n^2)
     * @param nums
     * @param start
     * @param end
     */

    public static void QuickSort(int[] nums, int start, int end) {
        int i = start;
        int j = end;
        if (start >= end) {
            return;
        }
        int temp = nums[i];
        while (i < j) {
            //从右往左扫描,找到小于temp的值
            while (i < j && nums[j] >= temp) {
                j--;
            }
            //找到小于temp的值,将其赋值给nums[i],并将i向右移一位。
            if (i < j) {
                nums[i] = nums[j];
                i++;
            }
            //从左往右扫描,直到找到大于temp的值
            while (i < j && nums[i] <= temp) {
                i++;
            }
            //找到大于temp的值,将其赋值给nums[j],并将j往左移一位。
            if (i < j) {
                nums[j] = nums[i];
                j--;
            }
        }
        //最后是temp的值
        nums[i] = temp;
        //递归将temp左边的数组排序
        QuickSort(nums, start, i - 1);
        QuickSort(nums, i + 1, end);
        //递归将temp右边的数组排序
    }


    public static void main(String[] args) {
        int[] nums = {6,89,2,11,3,79,51,19,87};
        QuickSort(nums, 0, nums.length - 1);

        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.生活原则 理性看待社会,动物性,再别人恐惧的时候贪婪,在别人贪婪的时候恐惧。 天性自负,没人看问题有忙点,规避...
    x聆风x阅读 3,682评论 0 50
  • 中午收盘看上证指数日线图,昨天画出这三条趋势线的尖角,天策说到关注突破方向,当前看,早晨直接低开就宣告破位了,那么...
    股海灯澜阅读 1,215评论 0 0
  • 1. 上班时间/下班时间/打卡方式/日常加班情况/加班晚上是否报销打车 2. 公司位置(繁华区域/非繁华区域),繁...
    凤梨随笔酥阅读 1,371评论 0 1