专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

快速排序与归并排序

快速排序:

不稳定
时间复杂度 o(n*logn)
空间复杂度: o(logn)

public class quickSort {
    public static void quickSort(int[] nums, int l, int r) {
        if (l >= r)
            return;
        int i = l;
        int j = r;
        int privot = nums[i];
        while (i < j) {
            while (i < j && nums[j] >= privot) {
                j--;
            }
            if (i < j)
                nums[i++] = nums[j];

            while (i < j && nums[i] <= privot) {
                i++;
            }
            if (i < j)
                nums[j--] = nums[i];
            nums[i] = privot;
        }
        quickSort(nums, l, i - 1);
        quickSort(nums, i + 1, r);
    }

    public static void main(String[] args) {
        int[] nums = new int[]{2, 4, 1, 23, 12, 32, 1};
        quickSort(nums, 0, nums.length - 1);
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
    }
}

归并排序:
稳定
时间复杂度 o(n*logn)
空间复杂度: o(n)

class Solution {
    int[] temp;

    public int[] sortArray(int[] nums) {
        temp = new int[nums.length];
        sort(nums,0,nums.length-1);
        return nums;
    }

    private void sort(int[] nums, int left, int right) {
        if (left >= right)
            return;
        int mid = left + (right - left) / 2;
        sort(nums, left, mid);
        sort(nums, mid + 1, right);
        merge(nums, left, right);
    }

    private void merge(int[] nums, int left, int right) {
        int k = left;
        int i = left;
        int mid = left + (right - left) / 2;
        int j = mid + 1;
        while (i <= mid && j <= right) {
            if (nums[i] < nums[j]) {
                temp[k++] = nums[i++];
            } else {
                temp[k++] = nums[j++];
            }
        }
        while (i <= mid) {
            temp[k++] = nums[i++];
        }
        while (j <= right) {
            temp[k++] = nums[j++];
        }
        k = left;
        while (left <= right){
            nums[left++] = temp[k++];
        }
    }
}

文章永久链接:https://tech.souyunku.com/27985

未经允许不得转载:搜云库技术团队 » 快速排序与归并排序

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们