C++ 详解快速排序代码
**快速排序有不止一种代码实现,下面只是其中一种,仅供参考。
// 一种快排模板 必须会自己写!!
// 建议模拟一遍,便于理解,光看代码难以真正明白
#include<bits/stdc++.h>
using namespace std;void Quicksort(int a[], int l, int r) {// l 代表排序开始位置;e 代表排序终止位置。if(l >= r) return;// 保证开始位置在终止位置之前。int i = l, j = r;// 利用始末位置而不改变原值:所以增加两个新变量。int key = l;// key类似指针,开始时指向初始位置,即假设第一个数是有序的。while(j > i){while(j > i && a[j] >= a[key])j--;// 必须从右边的在前面while(j > i && a[i] <= a[key])i++;// 从前面得知,key == i,如果这两行在前面,那一定会先执行这个操作,这样不行swap(a[i], a[j]);// swap是一个简单的交换函数(偷下懒qaq)}// i == j 时跳出while循环// 如果不能理解建议在自己手画模拟一遍swap(a[key], a[i]);// 以此时的a[i] 为分界线,前面的数一定比a[i]小,后面的一定比a[i]大// 再运用递归将a[i]前面的和后面的分别排好序Quicksort(a, l, i-1);Quicksort(a, i+1, r);
}
int a[500];
int main()
{int n;while(cin >> n){for(int i = 0; i < n; i++)cin >> a[i];Quicksort(a, 0, n - 1);for(int i = 0; i < n; i++)cout << a[i] << " ";cout << endl;}return 0;
}
**下面这种感觉更简单一些(y总yyds)
#include<bits/stdc++.h>
using namespace std;void QuickSort(int a[], int l, int r){if(l >= r) return ;int i = l - 1, j = r + 1, x = a[l + r >> 1];while(i < j){do i++; while(x > a[i]);do j--; while(x < a[j]);if(i < j) swap(a[i], a[j]);}QuickSort(a, l, j), QuickSort(a, j + 1, r);
}
int a[10000];
int main()
{int n;while(cin >> n){for(int i = 0; i < n; i++){cin >> a[i];}QuickSort(a, 0, n - 1);for(int i = 0; i < n; i++){cout << a[i] << " ";}}return 0;
}
老师说每一种都有它的用处,所以都得学会T_T
C++ 详解快速排序代码相关推荐
- js排序算法详解-快速排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-快速排序 既然是快速排序,那顾名思义一定很快,快的连小编都被懵逼了好几圈!建议先不要看动图,先看第一种写法: ...
- 算法 经典的八大排序算法详解和代码实现
算法 经典的八大排序算法详解和代码实现 排序算法的介绍 排序的分类 算法的时间复杂度 时间频度 示例 图表理解时间复杂度的特点 时间复杂度 常见的时间复杂度 空间复杂度 排序算法的时间复杂度 冒泡排序 ...
- 扫描线填充多边形算法详解与代码
扫描线填充多边形算法详解与代码 首先给出已知信息:多边形结构体里面包含三个信息:顶点个数,顶点和颜色 class MyPolygon {public:int m_VerticeNumber;CPoin ...
- 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)
Datawhale 作者:赵楠.杨开漠.谢文昕.张雨 寄语:本文针对5大机器学习经典算法,梳理了其模型.策略和求解等方面的内容,同时给出了其对应sklearn的参数详解和代码实现,帮助学习者入门和巩固 ...
- 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码
粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...
- 图像质量损失函数SSIM Loss的原理详解和代码具体实现
本文转自微信公众号SIGAI 文章PDF见: http://www.tensorinfinity.com/paper_164.html http://www.360doc.com/content/19 ...
- python 自动化-Python API 自动化实战详解(纯代码)
主要讲如何在公司利用Python 搞API自动化. 1.分层设计思路 dataPool :数据池层,里面有我们需要的各种数据,包括一些公共数据等 config :基础配置 tools : 工具层 co ...
- 数学建模——智能优化之遗传算法详解Python代码
数学建模--智能优化之遗传算法详解Python代码 import numpy as np import matplotlib.pyplot as plt from matplotlib import ...
- 数学建模——主成分分析算法详解Python代码
数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...
- 数学建模——智能优化之模拟退火模型详解Python代码
数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...
最新文章
- 在析构函数中delete this指针问题
- C++模式学习------策略模式
- Pass4side CompTIA PK0-002题库下载
- 两个大功率肖特基二极管的V-A特性
- Keil进入仿真,窗口不显示程序运行箭头
- mysql 表中添加唯一约束
- selenium + python自动化测试unittest框架学习(二)
- ICS汇编学习笔记——8086中的寄存器
- 从Google Wave和XML看软件复杂性之争,互联网营销
- latex subsection_利用LaTeX批量寫作「平安經」
- c# 日期转换为单词
- 怎么搜索php文件内容,linux怎么搜索文件
- SGU 327 Yet Another Palindrome(状态压缩DP)
- java实现微信支付
- Goolg adb常用工具包下载地址
- macBook笔记本音乐播放器没声音
- linux 输入密码后无法进入系统,【Linux学习笔记十六】用户密码修复和GRUB引导错误无法进入系统解决办法...
- wget php mirror 地址,wget命令镜像网站
- 【DP1】钢条分割详解
- letcode 715