博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT A1098 堆排序
阅读量:6926 次
发布时间:2019-06-27

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

clipboard.png

完整的堆排序内容;

其中给出了一个思路,就是对于插入排序,使用sort函数会快很多。。。这也算模拟经典排序的一种取巧方式

#include
#include
#include
#include
#include
using namespace std;using std::vector;const int maxn=110;int n;int aim_quence[maxn];int heap[maxn];int input[maxn];int flag=0;bool isSame(int a[],int b[]){ for(int i=1;i<=n;i++){ if(a[i]!=b[i]) return false; } return true;}void insert_sort(){ for(int i=2;i<=n;i++){ sort(input+1,input+i+1); if(flag!=0) break; if(isSame(input,aim_quence)){ flag=1; } }}void downAdujst(int low,int high){ //插入时进行向下调整 int i=low; int j=2*i; while(j<=high){ //cout<<11<
heap[i]){ swap(heap[j],heap[i]); i=j; j=i*2; }else{ break; } }}void heapSort(){ for(int i=n;i>1;i--){ swap(heap[i],heap[1]); downAdujst(1,i-1); if(flag!=0) break; if(isSame(heap,aim_quence)){ flag=2; } }}void create(){ for(int i=n/2;i>=1;i--){ downAdujst(i,n); }}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&input[i]); heap[i]=input[i]; } for(int i=1;i<=n;i++){ scanf("%d",&aim_quence[i]); } insert_sort(); create(); heapSort(); if(flag==1){ printf("Insertion Sort\n"); for(int i=1;i<=n;i++){ if(i==1) printf("%d",input[i]); else printf(" %d",input[i]); } }else if(flag==2){ printf("Heap Sort\n"); for(int i=1;i<=n;i++){ if(i==1) printf("%d",heap[i]); else printf(" %d",heap[i]); } } system("pause"); return 0;}

转载地址:http://sgcjl.baihongyu.com/

你可能感兴趣的文章
云计算之分布式表格系统
查看>>
Apache Commons工具集简介
查看>>
Java socket教程
查看>>
maven中依赖的scope各个取值的含义
查看>>
IPv6协议解析
查看>>
linux文件时间戳的意义和区别:atime, ctime, mtime
查看>>
ubuntu jdk
查看>>
新手学习安装Windows字体
查看>>
PHP7和HHVM的性能之争
查看>>
我的友情链接
查看>>
【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现
查看>>
程序的流程控制(C++)
查看>>
C++应用程序性能优化(五)——操作系统的内存管理
查看>>
嵌入式 Linux C语言(十)——静态库函数和动态库函数
查看>>
LVS之VS/DR搭建web集群实战!!!
查看>>
Java基础学习总结(20)——基础语法
查看>>
大型网站技术架构(四)网站的高性能架构
查看>>
jquery 刮奖插件
查看>>
es6--export default
查看>>
Java JNI 调用C++ API及中文编码问题
查看>>