博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++,快速排序【写出来的】
阅读量:5254 次
发布时间:2019-06-14

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

C++的各位,用sort应该很顺手了,它很方便。

特别是自己可以写个comp函数,排结构体这种类型的时候,就更方便了。

 

快排是必备的算法,自己写出来,才能更明白。

基本思想:选取枢轴,将一个完整序列分为左右两部分,通过一趟排序使得左子序列的值都小于右子序列的值。

再分别将左子序列和右子序列划分为左右两部分,分别进行排序。

 

具体做法:两个指针i,j,初始值为l,r。枢轴为mid。j从当前位置开始往前找第一个小于mid的记录,i从当前位置往后找第一个大于mid的记录,将两个值交换。重复该过程,指导i>j。

#include
using namespace std;void qsort(int,int);int a[100005];int main(){
//基本的输入和输出 int n,i; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; qsort(1,n); for(i=1;i<=n;i++) cout<
<<" "; return 0;}void qsort(int l,int r){ int i,j,mid,tmp; i=l; j=r; mid=a[(l+r)/2];//mid枢轴设为当前序列中间位置的值 do{ while(a[i]
mid) j--;//在右子序列找比mid小的记录 if(i<=j){
//找到了两个需要交换的记录,交换 tmp=a[i]; a[i]=a[j]; a[j]=tmp; i++;//i继续向后找 j--;//j继续向前找 } }while(i<=j); if(l
View Code

 

转载于:https://www.cnblogs.com/guesswhohia/p/6179776.html

你可能感兴趣的文章
Web安全测试漏洞场景
查看>>
sqlserver、mysql、oracle各自的默认端口号
查看>>
各种ORM框架一站式代码下载
查看>>
HTTP状态码详解
查看>>
Activity生命周期以及启动模式对生命周期的影响(二)
查看>>
MailHelper
查看>>
Android注解使用之ButterKnife 8.0注解使用介绍
查看>>
INotitypropertyChanged
查看>>
WPF数据绑定
查看>>
JEECMS的几个细节
查看>>
C# 当前时间和时间戳互相转换
查看>>
项目从0到1
查看>>
20145322 Exp5 MS11_050
查看>>
box-sizing属性
查看>>
微信小程序——<radio></radio>大小改变
查看>>
private继承如何转换
查看>>
求π【VB代码实现】
查看>>
VNC 登录上去灰屏,没有shell脚本,鼠标变成X
查看>>
jquery选择器demo
查看>>
javascript 函数和作用域(函数,this)(六)
查看>>