当前位置: 首页 > article >正文

912.排序数组(桶排序)

目录

  • 题目
  • 解法

题目

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

你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。

解法

class Solution {
public:
    vector<int> sortArray(vector<int>& nums) {
        // BucketSort 桶排序
        int n = nums.size();
        // 获取数组的最小值和最大值
        int maxNum = nums[0], minNum = nums[0];
        for (int i = 1; i < n; ++i) {
            if (nums[i] > maxNum) maxNum = nums[i];
            if (nums[i] < minNum) minNum = nums[i];
        }
        // 初始化桶
        int bucketNum = 5, bucketSize = (maxNum - minNum) / bucketNum + 1;
        vector<vector<int>> buckets(bucketNum, vector<int>(0));
        // 小至大分桶
        for (int num : nums) {
            int bucketIndex = (num - minNum) / bucketSize;
            buckets[bucketIndex].emplace_back(num);
        }
        // 桶内排序
        for (int i = 0; i < buckets.size(); ++i) {
            sort(buckets[i].begin(), buckets[i].end());
        }
        // 从桶中依次取数
        int index = 0;
        for (auto& bucket : buckets) {
            for (int num : bucket) {
                nums[index++] = num;
            }
        }

        return nums;
    }
};



http://www.kler.cn/news/366151.html

相关文章:

  • Android中的权限管理机制
  • Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具
  • Cout输出应用举例
  • python-PyQt项目实战案例:制作一个视频播放器
  • 400V交流智能剩余电流监测系统设计与应用
  • python multiprocessing lock锁在相同父进程ID起作用
  • 文件下载漏洞
  • 中小企业设备管理流程优化:Spring Boot系统实现
  • react项目因eslint检测未通过而Failed to compile编译失败
  • 线性可分支持向量机的原理推导 9-18基于拉格朗日函数L(w,b,α) 对w求偏导 公式解析
  • 【设计模式-我的思考】套餐模式
  • 【有啥问啥】CLIP Adapter:提升视觉语言模型性能的利器
  • LeetCode 每周算法 10(多维动态规划、技巧)
  • 银行客户贷款行为数据挖掘与分析
  • 入侵检测算法平台部署LiteAIServer视频智能分析平台行人入侵检测算法
  • 分布式光伏发电系统电气一次部分设计(开题报告3)
  • GFF: Gated Fully Fusion for Semantic Segmentation门控融合语义分割-论文阅读笔记
  • ChainLink 预言机学习
  • 华为OD机试真题-矩形绘制-2024年OD统一考试(E卷)
  • 依赖关系是危险的
  • 深入探讨 HTTP 请求方法:GET、POST、PUT、DELETE 的实用指南
  • 泛型的特点
  • C++《vector》
  • 【实战案例】Django框架使用模板渲染视图页面及异常处理
  • Vscode连接WSL2(Ubuntu20.04)
  • P2818 天使的起誓