快速排序以及堆排序在查找数方面的主要应用 即将引出线性查找BFPRT算法
来源:互联网 发布:mac 管理员运行终端 编辑:程序博客网 时间:2024/06/06 02:56
<span style="font-size: 13.3333px;"><span style="font-size: 13.3333px;">应用解释:要求找出一组数中的第n大的数字</span></span>
<span style="font-size: 13.3333px;">1.快速排序改进-1(快速选择算法)</span><p style="font-size: 13.3333px;"></p><p style="font-size: 13.3333px;">快速选择算法在于排除,因为一次快排之后便可以确定要找的数在那个子区间,然后不断递归知道找到解,如果没有解最终会导致left>right,从而返回-1,代表输入的要找的数比容量要大当然为了简化的话,是一定要进行剪枝,即当输入的数比容量大的时候直接返回error</p>
#include"iostream"#include"cstdio"using namespace std;int a[]={0,1,32,43,6,5,67,6,765,7};int length=0;void swap(int x,int y){int t;t=a[x];a[x]=a[y];a[y]=t;}int quicksort(int left,int right,int num){if(left>right) return -1; //查找不到 else{int i,j,t,temp;i=left;j=right;temp=a[left];while(i!=j){ while(i<j&&a[j]>=temp) { j--; } while(i<j&&a[i]<=temp) { i++; } if(i<j) { swap(i,j); }}a[left]=a[i];a[i]=temp;if(i==num){return a[i]; }else{if(i>num) return quicksort(left,i-1,num);else return quicksort(i+1,right,num); }}}int main(){int n;cin>>n;length=sizeof(a)/sizeof(int);cout<<quicksort(1,length-1,n)<<endl;return 0;}
2.堆排序(构建大根堆,不断进行选择,录入结束,即求出了该数)
</pre><p></p><pre name="code" class="cpp">#include"iostream"#include"cstdio"using namespace std;int a[]={0,1,33,5,57,2,456,76,354};int n;void swap(int x,int y){int t=a[x];a[x]=a[y];a[y]=t;}void siftdown(int i){int t,flag=0;while(flag==0&&i*2<=n){if(a[i]<a[i*2]){t=i*2;}else{t=i;}if(i*2+1<=n){if(a[t]<a[i*2+1]){t=i*2+1; }}if(t!=i){swap(i,t);}else{flag=1;}}}int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=n/2;i>=1;i--){siftdown(i);}int p;cin>>p;while(p!=-1){if(a[1]>p){a[1]=p;siftdown(1);}cin>>p;}cout<<a[1]<<endl;;return 0;}
1 0
- 快速排序以及堆排序在查找数方面的主要应用 即将引出线性查找BFPRT算法
- BFPRT(线性查找)算法
- 五.BFPRT线性查找算法
- 三、线性查找算法,BFPRT 算法 《转》
- 利用快速排序算法的思想,在一组随机排序数中,查找第K小的值。
- 快速排序,希尔排序以及KMP字符查找算法
- 快速排序以及二分查找的实现
- PHP:冒泡排序、快速查找和二分查找的思路以及算法
- 冒泡排序 二分查找 快速排序 线性查找
- 冒泡排序,选择排序,快速排序,堆排序与二分查找算法
- 拓扑排序, 快速排序, 冒泡排序, 堆排序, 二分查找
- 排序和查找-线性排序算法和查找特定值
- 查找、排序的应用
- 将快速排序应用于相同数查找算法实现
- 九、线性查找(BFPRT)
- 基础算法(四)---线性查找算法(BFPRT)
- 【算法】堆排序以及应用
- 堆排序查找前N个最大数和二分查找算法
- webview跨域问题解决方案
- aspnet_regiis.exe用法
- 一个类中多个方法进行Junit测试
- php乘法口诀
- 正则表达式(以Java语言为例)
- 快速排序以及堆排序在查找数方面的主要应用 即将引出线性查找BFPRT算法
- Spark架构与作业执行流程简介
- 如何对web.config进行加密和解密
- 非实时系统精确定时器的实现
- runtime获取对象属性及方法列表
- 联合查询 thinkPHP
- Excel导入导出
- tuzicms 2.5 zend环境检测提示未安装,无法下一步安装程序
- Java和JavaScript中使用Json方法大全