博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【分治】简单说说快排
阅读量:4622 次
发布时间:2019-06-09

本文共 1092 字,大约阅读时间需要 3 分钟。

说到快拍,大家都会首先想到sort函数这个神奇的东西

但是,我们总得知道快拍主要用的分治思想

所以就说一说快拍吧

首先是分类

快拍主要有三种方式:

一、以第一个数为基准排序

二、以中间的数为基准快排

三、随机生成一个位置,用这个位置上的数快排

代码如下:

#include
#include
#include
#include
#include
using namespace std;int n,a[2000002];/*int rrand(int l,int r) //三中用于生成随机位置{ srand((unsigned)time(NULL)); return (int)(rand()%(r-l+1)+l);}*/void qsort(int l,int r) //以中间的数为基准快排{ int i,j,mid,p; i=l;j=r; mid=a[(l+r)/2]; do { while(a[i]
mid) j--; if(i<=j) { p=a[i]; a[i]=a[j]; a[j]=p; i++; j--; } }while(i<=j); if(l
temp) { swap(i,j); break; } } } a[i]=temp; qsort(l,i); qsort(i+1,r);}*/ int main(){ freopen("sorttest.in","r",stdin); freopen("sorttest.out","w",stdout); scanf("%d",&n); for(int i=n;i>=1;i--) scanf("%d",&a[i]); /*sort(a+1,a+n+1); //喜闻乐见的sort for(int i=1;i<=n;++i)printf("%d ",a[i]); */ qsort(1,n); for(int i=1;i<=n;++i)printf("%d ",a[i]); fclose(stdout); return 0;}

 

转载于:https://www.cnblogs.com/rir1715/p/6822072.html

你可能感兴趣的文章
分布式事务解决方案(一) 2阶段提交 & 3阶段提交 & TCC
查看>>
android之网格布局和线性布局实现注册页面
查看>>
BZOJ 1014: [JSOI2008]火星人prefix( splay + hash )
查看>>
安装ejabberd2并配置MySQL为其数据库
查看>>
angular repeat
查看>>
android 图片圆角化控件
查看>>
java第三次作业
查看>>
HP Jack介绍
查看>>
敏捷软件开发(3)---COMMAND 模式 & Active Object 模式
查看>>
poj 1062 昂贵的聘礼 解题报告
查看>>
get the page name from url
查看>>
visual studio中csproj文件中的project guid改为小写 ( notepad++ 正则)
查看>>
TeeChart显示三维的图形,使用Surface
查看>>
如何使用 Idea 远程调试 Java 代码
查看>>
加密,解密
查看>>
在C#代码中应用Log4Net(一)简单使用Log4Net
查看>>
[转]如何写软件项目技术标
查看>>
每日站立会议个人博客五
查看>>
ddd
查看>>
死磕 java同步系列之AQS起篇
查看>>