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

快速排序的优化:荷兰国旗问题

测试

PTA:校内链接7-1 排序 - Search & Sort(信安24)

题目

图解

因为嗯,我觉得文字描述太干了,而且很难看也是画了个图解好理解一点ovo

首先是一个乱序的数组我们给他排序,我们先设置两个界限,和三个指针,下面会给出每个东西的含意,和基本的逻辑

然后我们来模拟逻辑

代码

#include<iostream> using namespace std; const int N = 1e5 + 2; int arr[N]; int first, last;//全局变量作为partition的返回值 void swap(int x, int y) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } void partition(int l, int r, int x) { first = l, last = r; int i = l; while (i <= last) { if (arr[i] == x) i++; else if (arr[i] < x) { swap(i++, first++); } else { swap(last--, i); } } } void sort(int l,int r) { if (l >= r) return; partition(l, r, arr[(l + r) / 2]); int fir = first; int las = last; sort(l, fir - 1); sort(las + 1, r); } int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> arr[i]; sort(0, n - 1); for (int i = 0; i < n; i++) cout << arr[i] <<" "[i==n-1]; }

结果

http://www.cnnetsun.cn/news/107287.html

相关文章:

  • 43、Linux 网络安全:防火墙与认证机制深度解析(上)
  • 44、一次性密码与安全外壳:保障系统安全登录的有效手段
  • PostgreSQL pgvector扩展:向量相似性搜索的终极实践指南
  • 50、Linux系统安装与磁盘分区全攻略
  • 27、Linux 路由软件配置指南
  • KISS FFT轻量级信号处理终极指南:从入门到精通
  • 快速掌握X-AnyLabeling:GeCO模型在目标计数中的完整实践指南
  • Mac M1芯片运行EmotiVoice性能表现如何?
  • 如何快速构建Next.js多租户认证系统:终极完整指南
  • 计算机Java毕设实战-基于JAVA的北京市公交管理系统基于Java的城市公交查询管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于SpringBoot的景点门票销售管理系统基于JAVA白云山景点门票销售管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 价值投资中的智能化精准癌症治疗系统分析
  • 前端一把梭,后端火葬场:别再让你的 Node.js 服务“裸奔”了
  • NVIDIA显卡配置实用手册:从日常应用到专业调校
  • 30、Shell脚本编写与Bash安装指南
  • 31、Bash使用与相关Shell比较全解析
  • 33、Bash 环境变量、操作符及选项全解析
  • 前端环境配置(nvm、nodejs、npm)
  • RK3588语音AI部署终极指南:算子兼容性深度优化与实战解决方案
  • EmotiVoice语音好奇感模拟促进知识探索
  • Abaqus轮轨瞬态动力学分析:从模型搭建到inp文件生成
  • 使用Playwright集成亮数据IP代理获取AI热点
  • 探索工程模拟与分析的多元世界:从轨道到建筑
  • Cuberite服务器日志分析完全指南:从入门到实战
  • EmotiVoice语音合成服务灰度日志采集规范
  • EmotiVoice语音自然度评分达到MOS 4.5以上
  • GISBox教你快速获取建筑数据并生成可发布的3D模型
  • EmotiVoice情感语音合成API接口调用详细说明
  • SenseVoice多语言语音理解:突破传统ASR局限的专业术语识别方案
  • Redash数据可视化:让枯燥数据秒变商业洞察