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

本文共 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://tkzdx.baihongyu.com/

你可能感兴趣的文章
用户授权控制、数据库远程维护、综合应用案例
查看>>
Windows XP \Windows 2003启动过程的学习及故障分析处理(七)
查看>>
Rsync服务器配置,安装、配置、实例以及原理详解(三)
查看>>
我的友情链接
查看>>
spring 使用redis集群配置
查看>>
Java创建多线程的方法
查看>>
Linux系统基础优化脚本--安装完操作系统必做的操作
查看>>
MYSQL的账号管理和授权
查看>>
cocos2d-x-3.0rc0新工程的分辨率设置和控制台输出信息
查看>>
34个漂亮的应用程序后台管理系统界面(系列二)
查看>>
【转】com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败
查看>>
oracle 插入时间字符串 Date类型
查看>>
rhel6.1 kvm安装virtio驱动
查看>>
oracle的正则表达式
查看>>
Mysql基础语法
查看>>
varnish原理精解
查看>>
我的RabbitMQ的学习成果
查看>>
libkrb5.so.3 环境变量
查看>>
H3C F100-M L2TP Winradius 设置图文教程
查看>>
C++ map的基本操作和使用
查看>>