博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快排+折半查找
阅读量:6343 次
发布时间:2019-06-22

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

1 #include
2 using namespace std; 3 int quick_sort(int (&a)[1000],int low,int high){ //一趟快速排序,快排的核心!!! 4 int key=a[low]; 5 a[0]=a[low]; //临时存放枢轴的元素值 6 while(low
=key) high--; 8 a[low]=a[high]; 9 while(low
<=key) low++;10 a[high]=a[low];11 }12 a[low]=a[0];13 return low; //返回枢轴的位置14 }15 void QuickSort(int (&a)[1000],int low,int high){ //快速排序16 if(low
high){24 return -1; //说明没有找到元素,返回-125 }26 int mid=(low+high)/2;27 if(a[mid]==value){28 return mid; //说明查找到了元素所在下标并且返回29 }else if(a[mid]
>n;38 for(int i=1;i<=n;i++){39 cin>>a[i];40 }41 QuickSort(a,1,n);42 cout<<"按从小到大快速排序后的序列为: "<
>value){ //输入value,能够多次查询,ctrl+z 结束输入49 int ans=Binary_search(a,1,n,value); //进行折半查找算法50 if(ans==-1) cout<<"未查找到值 "<
<

 

快排的核心思想就是枢轴左边要么都是比它值大的,要么就是都是值比它小的,右边同理。

快排最优的时间复杂度为O(n*logn),最坏情况为要么全是逆序或者正序,时间复杂度为O(n*n),根据推导,平均时间复杂度为O(n*logn)。

就空间复杂度来说,主要是递归造成的栈空间的使用,最好情况,递归树的深度为log2n,其空间复杂度也就为O(logn),最坏情况,需要进行n‐1递归调用,其空间复杂度为O(n),平均情况,空间复杂度也为O(logn)。

折半查找就是二分

转载于:https://www.cnblogs.com/ISGuXing/p/9118792.html

你可能感兴趣的文章
c++函数重载
查看>>
2017.12.24
查看>>
Genymotion 模拟器连接不上(adb server version (40) doesn't match this client (39))
查看>>
spark查看stage和tasks信息
查看>>
day41-mysql七:视图、触发器、事务、存储过程、函数
查看>>
NIO与IO的区别
查看>>
用ElasticSearch存储日志
查看>>
网络文件共享服务之虚拟用户小实验
查看>>
单例的定义
查看>>
hadoop之JobTracker,TaskTracker,hadoop调度器
查看>>
apache2.2 虚拟主机配置详解
查看>>
C# winform调用类似按钮点击的事件时自带参数该怎么写
查看>>
去掉scroll-view滚动条方法
查看>>
[leetcode-670-Maximum Swap]
查看>>
Activity中ConfigChanges属性的用法
查看>>
lesson4:使用锁Lock来解决重复下单的问题
查看>>
多个文件下载打包生成zip格式下载
查看>>
leetcode-887-三维形体投影面积
查看>>
java web项目下的lib和build path 中jar包问题解惑
查看>>
String类的写时拷贝
查看>>