快速排序
2015-06-22 15:15
204 查看
快速排序是对冒泡排序的一种改进。快速排序是选定一个枢轴,通过一趟排序使得枢轴左侧的元素都比枢轴元素小,右边元素都比枢轴元素大,然后再递归的对两侧元素同样处理,最后达到整个序列的有序。
继续度娘盗图。。。
继续度娘盗图。。。
#include <iostream> #include <cstring> #include <cstdlib> using namespace std; #define maxn 20 typedef struct SqList { int r[maxn]; int Length; }SqList; void InitSqList(SqList &L,int n) { int num; for(int i=0; i<maxn; i++) L.r[i] = 0; for(int i=1; i<=n; i++) { cin>>num; L.r[i] = num; } L.Length = n; } void PrintSqList(SqList L) { for(int i=1; i<=L.Length; i++) cout<<L.r[i]<<" "; } //返回枢轴位置 int Partition(SqList &L,int low,int high) { int temp; temp = L.r[low]; L.r[0] = L.r[low]; while(low<high) { while(low<high&&L.r[high]>=temp) high--; L.r[low] = L.r[high]; while(low<high&&L.r[low]<=temp) low++; L.r[high] = L.r[low]; } L.r[low] = L.r[0]; return low; } void QSort(SqList &L,int low,int high) { int add; if(low<high) { add = Partition(L,low,high); QSort(L,low,add-1); QSort(L,add+1,high); } } void QuickSort(SqList &L) { QSort(L,1,L.Length); } int main() { SqList L; int n; cin>>n; InitSqList(L,n); QuickSort(L); PrintSqList(L); return 0; }
相关文章推荐
- Linux网络相关配置
- 【IOS】类似美团向下展开式选项
- 30分钟让你懂得正则表达式
- c++操作符重载
- IO流之文件读写操作
- Linux SPI总线和设备驱动架构之三:SPI控制器驱动
- sockjs-web实时通信协议
- html小知识
- 01-数据分析之始末-概览篇
- Android数据存储
- linux命令df
- 2015-第16周项目3-max带来的冲突
- 6.22 比较大小 oj 洗刷刷 1
- 堆排序
- ORACLE触发特定的解释
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
- NTDS.dit hash提取工具
- 汇正进销存——开账文档
- 日语学习之沪江N3基础 20150622 -6
- PATBasic——1011. A+B和C (15)