博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序算法实现,模拟讲解
阅读量:7062 次
发布时间:2019-06-28

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

快速排序是一个比较好的算法,其平均时间复杂度为O(nlog(n)),最极端状态为O(n2)

对于排序算法来说是比较快的,但排序算法是递归的调用,会占用大量资源

实现如下:

 

/*	Filename:quickSort.cpp	Author: xiaobing	E-mail: xiaobingzhang29@gmail.com	Date: 2013-08-25*/#include
#include
#include
#include
#define N 10using namespace std;int Partition(int data[],int low,int high);/* 快速排序算法(quick sort),此算法的原理是: 才用分治的思想,排序过程有三个值需要注意: 一个是low,指向分组中的第一个元素,如第一次为a[0] 一个是high 指向分组中的最后一个元素,如第一次为a[n-1] 一个是mid 这个值用来做对这个分组进行分割的值,按理可以取任何值 但为了维护方便,总是取第一个值,即:a[low] 在数组a[0:n-1]进行排序时, 开始选择a[0]作为中间值mid,然后开始 1. 从最右边开始找一个比mid小的值,将a[low] = a[hight];接着, 2. 从最左边找一个比mid大的值,将a[high] = a[low]; 注意:在两个位置low递增和high递减时,都得满足low < high 这样重复进行1,2,最终结束的条件就是low == high, 这时,将a[low] = mid,就把这个值给还原了,并且,可以发现,在a[low] 的右边都大于等于a[low],在a[low]左边都小于等于a[low], 这时,将分界点low返回,进行下一次从0到low - 1 和 low + 1到high的排序 最终将全部排序完毕为left + mid + high *///这是一个递归函数,无限递归下去,所以快速排序要占大量的空间void Quick_sort(int data[],int low,int high) { int mid; if(low
= mid)) { --high; } // 从high的位置开始往low的方向找,找到比data[low]小的元素,存到data[low]中 data[low]=data[high]; // 这个循环是从左边开始找比mid大的元素的位置 while((low < high) && (data[low] < mid)) { ++low; } // 从low的位置开始往high的方向找,找到比data[high]大的元素,存在data[high]中 data[high]=data[low]; } //注意到这里结束的条件是low == high,我看的时候这里没注意,想了很长时间 //将中间值存入mid,保持data[low] 左边的元素小于等于他,右边的大于等于他 data[low] = mid; //返回分解点 return low; } //打印数据void print(int a[], int n){ int i; for(i = 0;i < n;i++){ cout<
<<" "; } cout<

转载请付上地址:

 

 

你可能感兴趣的文章
前端学Markdown
查看>>
easyui datagrid 行右键生成 动态获取(toolbar) 按钮
查看>>
Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例
查看>>
get方式和set方式提交时乱码
查看>>
正则表达式
查看>>
JavaBean,List,Map转成json格式
查看>>
(原+转)Ubuntu16.04软件中心闪退及wifi消失
查看>>
Linux下高并发socket最大连接数所受的各种限制
查看>>
java 设计模式 -- 责任链模式
查看>>
ATL接口返回类型&&ATL接口返回字符串BSTR*
查看>>
51 Nod 1008 N的阶乘 mod P【Java大数乱搞】
查看>>
空间统计之七:中心要素
查看>>
自己写的一部分斗地主的程序,没有去写界面,临时是用黑框来显示的
查看>>
nginx学习1
查看>>
mysql批量删除相同前缀的表格
查看>>
HDU 5358 First One(枚举)
查看>>
mac brew 安装 nginx fpm mysql 教程
查看>>
c27---typedef
查看>>
【】Python】异常处理try...except、raise
查看>>
GNU General Public License v3.0
查看>>