力扣—912. 排序数组

embedded/2024/11/29 19:55:54/

912. 排序数组

题目:

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

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

示例:

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 5 * 104
  • -5 * 104 <= nums[i] <= 5 * 104

整体思路:快速排序

以第一个元素为基准值,从第一个元素开始与基准值比较

1如果大于基准值:将元素与第--j(因为j在所有元素最后面)个交换

2如果小于基准值:将元素与第++i(因为i在所有元素最前面)个交换

3相等就直接去比较下一个元素

   5,2,3,1

i  L                R  j

代码:

class Solution {
public:void Quick(vector<int> &arr,int L, int R) {if(L >= R) return;//递归结束条件int i = L - 1;//i在所有元素最前面int j = R + 1;//j在所有元素最后面int index = L;//从第一个元素开始比较int temp = arr[L];//以第一个元素最为基准值while(index < j){//如果index和j在同一位置结束循环if(arr[index] > temp) swap(arr[--j], arr[index]);//1else if(arr[index] < temp) swap(arr[++i], arr[index]);//2else index++;//3}//此时以基准值为中心,基准值前面都是比基准值小的,基准值后面都是比基准值大的//但是这两部分内部还没有排好序,所以递归将两边再排好Quick(arr, L, i);//比基准值小的部分Quick(arr, j, R);//比基准值大的部分}vector<int> sortArray(vector<int>& nums){if(nums.size() == 1) return nums;//长度等于1就不用排了直接输出即可Quick(nums, 0, nums.size() - 1);//调用函数进行快排return nums;//返回排好的数组}
};


http://www.ppmy.cn/embedded/141563.html

相关文章

【机器学习】——卷积与循环的交响曲:神经网络模型在现代科技中的协奏

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

w056基于web的教学资源库

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

观察者模式和发布订阅模式

文章目录 手写观察者模式手写发布订阅模式 观察者模式 Subject 和 Observer 直接绑定&#xff0c;中间无媒介。如点击事件&#xff0c;事件直接和按钮进行绑定。 发布订阅模式 Publisher 和 Observer 相互不认识&#xff0c;中间有媒介。如在 A 组件中绑定一个事件&#xff…

如何利用python爬虫获得店铺的所有商品

在数字化时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是对于电商平台而言&#xff0c;精准获取店铺商品信息对于市场分析、竞争对手研究等方面至关重要。本文将详细介绍如何利用Python爬虫技术精准获取店铺的所有商品信息&#xff0c;并提供代码示例。 1. 准备工作 在…

扫雷-完整源码(C语言实现)

云边有个稻草人-CSDN博客 在学完C语言函数之后&#xff0c;我们就有能力去实现简易版扫雷游戏了&#xff08;成就感满满&#xff09;&#xff0c;下面是扫雷游戏的源码&#xff0c;快试一试效果如何吧&#xff01; 在test.c里面进行扫雷游戏的测试&#xff0c;game.h和game.c…

二维码有哪些网络安全风险隐患?

中国网民规模达10亿人&#xff0c;每个人几乎在智能手机用户在其移动设备上使用过二维码。随着人们越来越习惯使用二维码&#xff0c;黑客开始使用它们来寻找另一种窃取凭证和访问敏感信息的方法。 国际知名网络安全专家、东方联盟创始人郭盛华透露&#xff1a;“黑客针对企业的…

豆包MarsCode算法题:三数之和问题

问题描述 思路分析 1. 排序数组 目的: 将数组 arr 按升序排序&#xff0c;这样可以方便地使用双指针找到满足条件的三元组&#xff0c;同时避免重复的三元组被重复计算。优势: 数组有序后&#xff0c;处理两个数和 target - arr[i] 的问题可以通过双指针快速找到所有可能的组…

(附项目源码可免费领取)java开发语言,springboot宿舍管理系统_574,计算机毕设程序开发+文案(LW+PPT)

摘 要 近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;宿舍管理系统利用计算机网络实现信息化管理&#xff0c;使整个宿舍管理的发展和服务水平有显著提升。 本文拟采用java技术和Sp…