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

排序算法学习笔记

排序算法

冒泡排序

正序:将最大的不断交换到序列末尾

    void Bubble_sort(vector<int> &nums){int n = nums.size();bool flag = 0;for(int i = 0;i<n-1;i++){flag = 0;for(int j = 0;j<n-i-1;j++){if(nums[j]>nums[j+1]){// swap(nums[j],nums[j+1]);int t = nums[j];nums[j] = nums[j+1];nums[j+1] = t;flag= 1;}}// 优化:有序后直接,排序结束if(flag == 0) break;}}

选择排序

每一次选择最大的/最小的到最新有序序列末尾

  void select_sort(vector<int> &nums){int n = nums.size();for(int i = 0;i<n;i++){for(int j = i+1;j<n;j++){if(nums[j]>nums[i]){int t = nums[i];nums[i] = nums[j];nums[j] = t; }}}}

插入排序

将有序序列的下一个数字插入到有序数列中

void insert_sort(vector<int> &nums){for(int i = 1;i<nums.size();i++){int key = nums[i];int j = i-1;while (j>=0 && nums[j]>key){/* code */nums[j+1] = nums[j];j--;}nums[j+1] = key;}
}

快速排序

子问题:荷兰国旗问题

 void quick_sort(vector<int> &nums,int l,int r){// 定基准const int pivot = nums[l+(rand()%(r-l))];int j,k,i;
// partioni = l;j = l;k = r;while (i<k){if(nums[i]<pivot){swap(nums[i++],nums[j++]);}else if(nums[i]>pivot){swap(nums[--k],nums[i]);}else{i++;}}quick_sort(nums,l,i);quick_sort(nums,k,r);}

归并排序

两个步骤

1、左右连部分各自排序

2、左右部分合并到一起

  void merge_sort(vector<int> &nums,int l,int r){if (l>=r) return ;int mid = l+((r-l)>>1);// 分int l1 = l,r1 = mid;int l2 = mid+1,r2 = r;merge_sort(nums,l1,r1);merge_sort(nums,l2,r2);// 合vector<int> temp;int k = l;// 比较while (l1<=r1 && l2<=r2){/* code */if(nums[l1]<nums[l2]){temp.push_back(nums[l1++]);}else{temp.push_back(nums[l2++]);}}while (l1<=r1){temp.push_back(nums[l1++]);}while (l2<=r2){temp.push_back(nums[l2++]);}for(int i = l;i<=r;i++){nums[i] = temp[i-l];// temp.pop_back();}}
http://www.hskmm.com/?act=detail&tid=37116

相关文章:

  • 异常值检测算法学习
  • 2025 年国内喷雾干燥机最新推荐排行榜:聚焦优质品牌,助力企业精准选设备造粒/工业喷雾/陶瓷喷雾/制粒/奶粉喷雾干燥机厂家推荐
  • Python环境教程(一)-环境入门之pip conda
  • AI股票预测分析报告 - 2025年10月23日
  • SQL Server 2008 R2 升级补丁需要注意的问题
  • Maven的使用(Leo)
  • 标题
  • 数字化实战:医疗器械行业售后工程师如何借CRM实现高效运维​
  • 20251020_QQ_Cipher
  • 2025年10月geo优化服务商推荐:知名机构评测列表
  • 高压差分探头PKDV508E使用常见问题与解决方案
  • 好拼|免费在线拼图工具上架谷歌商店啦 - ops
  • 基于MATLAB/Simulink的光照强度模型构建方法
  • 地中海、双肩包、格子衫?从业9年程序员聊聊真实的程序员是什么样子
  • 2025年10月又红又痒用什么产品推荐:口碑排行五款精华评价
  • 卫星遥感技术在河湖监管中的应用
  • VonaJS AOP编程:魔术方法
  • windows11关闭自动更新,通用解决方法
  • 2025年10月海南监理公司评测榜:五家实力排名全览
  • 2025年10月geo服务商推荐:主流品牌全维度对比排行榜
  • 2025年10月geo服务商推荐:权威评测列表助您精准避坑
  • 推动教育质量,布谷鸟网络科技定制K12在线教育在线教育网校软件服务
  • 使用vscode进行linux 服务器远程管理
  • 深入解析:Unity避坑——继承了MonoBehaviour的对象不能通过new来创建
  • 网页
  • 2025年10月geo优化公司推荐:主流口碑排行榜全解析
  • 2025年10月geo优化公司推荐:知名机构评测列表
  • 2025年沈阳酒店联系电话推荐:地铁直达景点合集
  • 2025年沈阳酒店联系电话推荐:地铁旁热门住宿清单
  • 头文件