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

快速排序代码

定第一个元素为中间值然后一直分两半递归#includestdio.h#includestdlib.hint n, a[105]; // n 为数组元素个数a 为待排序数组下标从 1 开始/** 快速排序函数* 参数a[] - 待排序数组* l - 左边界起始下标* r - 右边界结束下标* 空间复杂度O(logn)递归栈深度* 稳定性不稳定* 平均时间复杂度O(nlogn)* 最坏时间复杂度O(n^2)当数组已经有序或逆序时*/void Qsort(int a[], int l, int r){int p; // 基准值if (l r) // 当区间长度大于1时才需要排序{int i l, j r;p a[l]; // 选取当前区间第一个元素作为基准值while (i j) // 当左右指针未相遇时{// 从右向左扫描找到第一个小于基准值的元素while (i j a[j] p) j--;if (i j) // 找到后放入左边的空位{a[i] a[j];i; // 左指针右移一位}// 从左向右扫描找到第一个大于基准值的元素while (i j a[i] p) i;if (i j) // 找到后放入右边的空位{a[j] a[i];j--; // 右指针左移一位}}// 循环结束时 i j即为基准值的最终位置a[i] p;// 递归处理基准值左边的子区间Qsort(a, l, i - 1);// 递归处理基准值右边的子区间Qsort(a, i 1, r);}}int main(){// 输入元素个数scanf(%d, n);// 输入数组元素下标从 1 开始for (int i 1; i n; i){scanf(%d, a[i]);}// 调用快速排序Qsort(a, 1, n);// 输出排序后的数组for (int i 1; i n; i){printf(%d , a[i]);}printf(\n);return 0;}
http://www.gsyq.cn/news/1414362.html

相关文章:

  • 2026连锁店总部配送中心如何搭建高效调配体系
  • 18650电池组DIY全流程:从BMS选型到性能测试与数据分析
  • Obsidian Projects:如何在纯文本环境中实现高效项目管理?
  • 无锡苏康虫害防治科技:无锡梁溪区灭蟑螂专业公司 - LYL仔仔
  • 构建量化策略的现代化框架:高性能分析与灵活扩展
  • 暗黑破坏神3终极自动化助手:D3keyHelper完全指南与实战技巧
  • 专业级浏览器资源嗅探实战:从基础配置到高级应用全解析
  • 从‘玄学’到‘科学’:如何像调试音频一样用Bode图分析你的控制系统?
  • 5个技巧让你告别视频转码等待:揭秘无损剪辑神器LosslessCut
  • GetQzonehistory:三步拯救你的QQ空间数字记忆
  • 完整指南:3步解锁网易云音乐NCM加密文件,实现跨平台播放自由
  • 通用小说下载神器 sonovel
  • Python之function-debugger包语法、参数和实际应用案例
  • 避坑指南:Unity ShaderGraph做火焰效果,为什么你的火苗不‘透’不‘飘’?
  • 基于Arduino与RS485传感器构建土壤NPK监测系统实战指南
  • AI生成浏览器操作系统:单文件HTML实现桌面环境与持久化文件系统
  • 如何用TrafficMonitor插件将Windows任务栏变成全能信息中心
  • 终极解决方案:如何在Windows资源管理器中免费显示HEIC缩略图
  • 基于模块化SMD与ROS的AMR构建:从硬件选型到SLAM导航全解析
  • 别再到处找教程了!用Python给AutoCAD写脚本,从VBA迁移到pywin32的保姆级避坑指南
  • 自条件化与非自回归吸引子:提升端到端说话人日志模型性能
  • 智能Parquet文件浏览器实战指南:一站式零门槛数据分析解决方案
  • 3分钟解决视频剪辑痛点:LosslessCut如何让无损剪辑效率提升10倍
  • Switch游戏画面电脑同步终极指南:5分钟实现高清直播录制
  • 2026济南婚纱摄影排名|全维度综合实力权威排行 - 江湖评测
  • 深度拆解:从 B+ 树到 LSM-Tree,数据存储引擎的进阶与演进
  • 告别“黑盒”:用gem5的GCN3模型,在家搭建你的AMD GPU研究环境
  • 5大核心功能解锁:Forza Mods AIO如何重塑你的极限竞速游戏体验
  • B站评论区成分检测器:3秒读懂评论者真实身份的终极指南
  • 如何利用MoocDownloader轻松实现MOOC课程永久保存:离线学习终极指南