【Leetcode题目-03】数组排序算法题目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Leetcode题目-03】数组排序算法题目相关的知识,希望对你有一定的参考价值。

参考技术A 剑指 Offer 45-把数组排成最小的数

0283-移动零

0215-数组中的第K个最大元素

0075-颜色分类

0912-排序数组

0506-相对名次

0088-合并两个有序数组

剑指 Offer 51-数组中的逆序对【这题还不会】

0315-计算右侧小于当前元素的个数【这题还不会】

0169-多数元素

剑指 Offer 40-最小的k个数

1122-数组的相对排序

0164-最大间距

0561-数组拆分I

0217-存在重复元素

0136-只出现一次的数字

0056-合并区间

912. 排序数组

算法记录

LeetCode 题目:

  给你一个整数数组 nums,请你将该数组升序排列。



说明

一、题目

  输入:nums = [5,2,3,1]
  输出:[1,2,3,5]

二、分析

  • 数组的排序方法有很多,我们这里采用单边递归树进行空间优化、基值优化的快速排序作为排序的方式。
class Solution {
    public void quickSort(int[] nums, int start, int end) {
        while(end > start) {
            int l = start, r = end;
            int par = nums[(l + r) / 2];
            do {
                while(nums[l] < par) l++;
                while(nums[r] > par) r--;
                if(l <= r) {
                    int temp = nums[l];
                    nums[l] = nums[r];
                    nums[r] = temp;
                    l++;
                    r--;
                }
            } while(l <= r);
            quickSort(nums, l, end);
            end = r;
        }
    }

    public int[] sortArray(int[] nums) {
        quickSort(nums, 0, nums.length - 1);
        return nums;
    }
}

总结

熟悉快速排序的方法。

以上是关于【Leetcode题目-03】数组排序算法题目的主要内容,如果未能解决你的问题,请参考以下文章

前端与算法 leetcode 26. 删除排序数组中的重复项

算法入门 02二分查找(简单 - 第四题)LeetCode 167

⭐算法入门⭐《二分枚举》简单06 —— LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

⭐算法入门⭐《队列 - 单调队列》中等03 —— LeetCode 918. 环形子数组的最大和

Leetcode题目34.在排序数组中查找元素的第一个和最后一个位置(中等)

LeetCode(算法)- 154. 寻找旋转排序数组中的最小值 II