**快速排序有不止一种代码实现,下面只是其中一种,仅供参考。

// 一种快排模板 必须会自己写!!
// 建议模拟一遍,便于理解,光看代码难以真正明白
#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++ 详解快速排序代码相关推荐

  1. js排序算法详解-快速排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-快速排序 既然是快速排序,那顾名思义一定很快,快的连小编都被懵逼了好几圈!建议先不要看动图,先看第一种写法: ...

  2. 算法 经典的八大排序算法详解和代码实现

    算法 经典的八大排序算法详解和代码实现 排序算法的介绍 排序的分类 算法的时间复杂度 时间频度 示例 图表理解时间复杂度的特点 时间复杂度 常见的时间复杂度 空间复杂度 排序算法的时间复杂度 冒泡排序 ...

  3. 扫描线填充多边形算法详解与代码

    扫描线填充多边形算法详解与代码 首先给出已知信息:多边形结构体里面包含三个信息:顶点个数,顶点和颜色 class MyPolygon {public:int m_VerticeNumber;CPoin ...

  4. 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)

    Datawhale 作者:赵楠.杨开漠.谢文昕.张雨 寄语:本文针对5大机器学习经典算法,梳理了其模型.策略和求解等方面的内容,同时给出了其对应sklearn的参数详解和代码实现,帮助学习者入门和巩固 ...

  5. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

  6. 图像质量损失函数SSIM Loss的原理详解和代码具体实现

    本文转自微信公众号SIGAI 文章PDF见: http://www.tensorinfinity.com/paper_164.html http://www.360doc.com/content/19 ...

  7. python 自动化-Python API 自动化实战详解(纯代码)

    主要讲如何在公司利用Python 搞API自动化. 1.分层设计思路 dataPool :数据池层,里面有我们需要的各种数据,包括一些公共数据等 config :基础配置 tools : 工具层 co ...

  8. 数学建模——智能优化之遗传算法详解Python代码

    数学建模--智能优化之遗传算法详解Python代码 import numpy as np import matplotlib.pyplot as plt from matplotlib import ...

  9. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  10. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

最新文章

  1. 在析构函数中delete this指针问题
  2. C++模式学习------策略模式
  3. Pass4side CompTIA PK0-002题库下载
  4. 两个大功率肖特基二极管的V-A特性
  5. Keil进入仿真,窗口不显示程序运行箭头
  6. mysql 表中添加唯一约束
  7. selenium + python自动化测试unittest框架学习(二)
  8. ICS汇编学习笔记——8086中的寄存器
  9. 从Google Wave和XML看软件复杂性之争,互联网营销
  10. latex subsection_利用LaTeX批量寫作「平安經」
  11. c# 日期转换为单词
  12. 怎么搜索php文件内容,linux怎么搜索文件
  13. SGU 327 Yet Another Palindrome(状态压缩DP)
  14. java实现微信支付
  15. Goolg adb常用工具包下载地址
  16. macBook笔记本音乐播放器没声音
  17. linux 输入密码后无法进入系统,【Linux学习笔记十六】用户密码修复和GRUB引导错误无法进入系统解决办法...
  18. wget php mirror 地址,wget命令镜像网站
  19. 【DP1】钢条分割详解
  20. letcode 715

热门文章

  1. 核心竞争力和壁垒 | 讲概念
  2. 服务器usb驱动安装系统安装失败怎么办,USB3.0驱动无法安装失败怎么办?USB驱动失败失败的解决方法...
  3. 大学英语四六级成绩查询
  4. 数字信号处理-01- 数字信号处理基础知识
  5. 5.stm32L476在freeRTOS下使用低功耗
  6. Creo二次开发:参数化设计
  7. 移动光猫路由改桥接降低延时初尝试
  8. CSU 1681 Adjoin(树形dp 树的直径)
  9. 《数据库原理与应用》分章节测试题一、二、三章
  10. IT江湖之怎样成为IT界的西门吹雪和独孤求败