快速排序
来源:互联网 发布:vscode 大小写快捷键 编辑:程序博客网 时间:2024/05/17 06:50
研究快速排序很长时间了。总结下自己的感受吧;
先是分解成两个部分,再是排序,最后合并。
伪代码
QUICKSORT(A, p, r)
1 if p < r
2 then q ← PARTITION(A, p, r) //关键
3 QUICKSORT(A, p, q - 1)
4 QUICKSORT(A, q + 1, r)
数组划分
快速排序算法的关键是PARTITION过程,它对A[p..r]进行就地重排:
PARTITION(A, p, r)
1 x ← A[r]
2 i ← p - 1
3 for j ← p to r - 1
4 do if A[j] ≤ x
5 then i ← i + 1
6 exchange A[i] <-> A[j]
7 exchange A[i + 1] <-> A[r]
8 return i + 1
代码
#include "iostream"using namespace std;void disp(int a[],int n){ for (int i=0;i<n;i++){ cout <<a[i]<<" "; } cout <<endl;}void swap(int &n,int& m){ int temp; temp=n; n=m; m=temp;}int partition(int a[],int p,int r){ int i=p-1; for (int j=p;j<=r-1;j++){ if (a[j]<=a[r]){ swap(a[++i],a[j]); } } swap(a[i+1],a[r]); return i+1;}void quicksort(int a[],int p,int r){ if (p<r){ int q=partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q,r); }}int main(){ int a[100]; int n; while (cin >>n){ for (int i=0;i<=n-1;i++){ cin >>a[i]; } quicksort(a,0,n-1); disp(a,n); } printf("dddd\n");}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- AUTODESK 2016
- Cover It Up - For TV Lovers
- The specified child already has a parent. You must call removeView() on the chil
- 简单的Java Web工程,实现登录注册
- 二叉堆
- 快速排序
- HDU 5301 Buildings(找规律)
- CentOS 6.3下配置软RAID(Software RAID)
- 关于CSS样式的笔记
- 多校第一场1006
- iOS开发分分钟搞定C语言 —— 数据类型
- 初涉iOS 通知机制
- topocoder Arena 客户端无法打开、下载jar包失败、jar包签名
- SVM源代码网站