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

优选算法_分治_快速排序_归并排序_C++

一.题目解析

我们不使用内置的函数进行升序,并且时间复杂度是O(nlog(n))

随机数的取值

我们不选中间值等的取值方法,完全随机取值效率更好,证明略

srand(time(NULL));//随机数种子 int getrandom(vector<int>& nums,int l,int r) { return nums[rand()%(r-l+1)+l]; }

算法一解析:分三组快速排序

选定一个关键数字key分为三组小于key的区间,等于key的区间,大于key的区间

怎么分呢?

再对左右区间进行排序,排序方法和第一步一样也就是递归实现,跟着代码走思路更加清晰

代码编写:

class Solution { public: vector<int> sortArray(vector<int>& nums) { srand(time(NULL));//随机数种子 int n=nums.size(); qsort(nums,0,n-1); return nums; } void qsort(vector<int>& nums,int l,int r) { if(l>=r)return ;//递归出口 int i=l,left=l-1,right=r+1; int key=getrandom(nums,l,r); while(i<right) { if(nums[i]<key) swap(nums[i++],nums[++left]); else if(nums[i]==key) i++; else swap(nums[i],nums[--right]); } //现在数组就分为了三组[l,left][left+1,right-1][right.r] qsort(nums,l,left);//左区间排序 qsort(nums,right,r);//右区间排序 return; } int getrandom(vector<int>& nums,int l,int r) { return nums[rand()%(r-l+1)+l]; } };

算法二:归并排序

将数组mid分成两部分,将左区间排序,将右区间排序,归并两个有序数组

具体就三步

1.mid分为两数组

2.左数组排序

3.右数组排序

4.合并两个有序数组

代码编写:

class Solution { public: vector<int> sortArray(vector<int>& nums) { mergesort(nums,0,nums.size()-1); return nums; } void mergesort(vector<int>& nums,int left,int right) { if(left>=right)return;//递归出口 int mid=left+(right-left)/2;//防止溢出 //区间变成了[left,mid][mid+1,right] //左右区间排序 mergesort(nums,left,mid); mergesort(nums,mid+1,right); //合并两个有序数组 vector<int>tmp(right-left+1); int cur1=left,cur2=mid+1,i=0; while(cur1<=mid&&cur2<=right) { if( nums[cur1]<=nums[cur2])tmp[i++]=nums[cur1++]; else tmp[i++]=nums[cur2++]; } while(cur1<=mid)//其中可能有一个数组更长 { tmp[i++]=nums[cur1++]; } while(cur2<=right) { tmp[i++]=nums[cur2++]; } //还原到nums中 for(int i=left;i<=right;i++) { nums[i]=tmp[i-left]; } } };
http://www.jsqmd.com/news/525069/

相关文章:

  • AI正在消灭芯片设计的学习曲线
  • 养虾之腾讯QClaw安装和使用_不支持离线模型_但是可以一键接入微信---AI大模型应用探索0014
  • 2026年美妆护肤GEO优化服务商观察:从技术适配到效果落地的三维分析 - 小白条111
  • PMSx003传感器嵌入式驱动库深度解析与工程实践
  • BEYOND REALITY Z-Image惊艳效果:眼镜反光+皮肤油脂感+布料褶皱同步建模
  • Vite项目实战:利用Autoprefixer优化跨浏览器CSS兼容性
  • Hyper-V Ubuntu静态IP配置与多虚拟机同网段部署指南
  • DeepSeek-OCR从图像到经纬:多模态文档解析终端完整工作流详解
  • How to fix use the FileZilla FTP upload file error All In One
  • GigaWorld-Policy——以动作为中心的世界–动作模型
  • 残差连接————Kimi注意力残差/字节混合注意力 - Big-Yellow
  • 海南乐卡科技客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • Qwen3-ASR-1.7B入门必看:Streamlit界面源码结构解析与自定义UI修改指南
  • AI写教材必备指南:专业工具助力,快速打造低查重教材!
  • 实战解密il2cpp的global-metadata.dat文件:用IDA和VS Code逆向分析技巧
  • Vue3 + Element Plus 日期选择器:开始 / 结束时间,结束时间不超过今天
  • MacBook用户必看:Cursor免费版无限续杯的3种技术方案
  • 亲测有效!论文AI率直降40%的秘密:4个指令+3个技巧+1个神器
  • 知网/维普/万方三大平台AI检测全攻略:一文搞懂怎么通过 - 我要发一区
  • MiniCPM-V-2_6科研协作:会议白板照片识别+行动项自动提取
  • 高效获取网络小说与个性化阅读的全流程指南
  • 达摩院PALM春联模型应用场景:文旅景区AI楹联互动体验设计
  • 2026四川AI企业培训避坑指南:选对路径,少走弯路
  • 数组中有两个数据,将其变成字符串
  • 毕业论文降AI率:免费额度/效果/售后全维度对比 - 我要发一区
  • 网捷顺科技客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • Clawdbot部署实操:Qwen3-32B与LangChain/LlamaIndex生态无缝集成指南
  • Breaking the Prior Dependency: A Novel Approach to Camouflaged Object Detection with Adaptive Featur
  • 嘎嘎降AI vs 比话降AI vs 率零:2026毕业季工具横评 - 我要发一区
  • 手把手教你为STM32F103C8T6(蓝色小药丸)编译Cleanflight固件,解决Flash溢出问题