PAT程序设计考题——甲级1098(Insertion or Heap Sort ) C++实现
来源:互联网 发布:淘宝分销货源平台 编辑:程序博客网 时间:2024/05/29 15:09
点击打开pat链接
#include<iostream>
#include<math.h>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<string>
#include<vector>
using namespace std;
#define INF 100000000
#define maxn 100010
int start[maxn],heap[maxn],object[maxn];
int num;
void downadjust(int index,int end)//小堆
{
//cout<<end<<endl;
int lchild,rchild;
int m=index;
int temp;
while(m<=end)
{
lchild=2*m;
rchild=2*m+1;
if(rchild<=end){
if(heap[lchild]>=heap[rchild]){
temp=lchild;
}
else
{ temp=rchild;
}}
else if(lchild<=end&&rchild>end)
{ temp=lchild;
// cout<<temp;
}
if(heap[temp]>heap[m]) {
swap(heap[m],heap[temp]);
m=temp;}
else return;
}
}
bool issame(int heap[]){
for(int i=1;i<=num;i++)
{
if(heap[i]!=object[i]) return false;
}
return true;
}
void showarray()
{
for(int i=1;i<=num;i++) {
cout<<heap[i];
if(i<=num-1) cout<<" ";}
}
void heapsort(){
bool flag=false;
for(int i=num/2;i>=1;i--)
downadjust(i,num);//建堆
// showarray();
int i;
for( i=num;i>2;i--)
{ if(issame(heap)) {
cout<<"Heap Sort"<<endl;
flag=true;break;
}
swap(heap[1],heap[i]);
downadjust(1,i-1);
// showarray();
}
swap(heap[1],heap[i]);
downadjust(1,i-1);
if(flag) showarray();
}
void insertsort()
{ bool flag=false;
for(int i=2;i<=num;i++)
{ if(i!=2&&issame(start)) {
cout<<"Insertion Sort"<<endl;
flag=true;
}
int temp=start[i],j;
for(j=i-1;j>=1;j--)
{
if(start[j]>temp) start[j+1]=start[j];
else break;
}
start[j+1]=temp;
if(flag) i=num;
}
if(flag) for(int i=1;i<=num;i++) {
cout<<start[i];
if(i<=num-1) cout<<" ";}
}
int main()
{ cin>>num;
for(int i=1;i<=num;i++){
cin>>heap[i];
start[i]=heap[i];
}
#include<math.h>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<string>
#include<vector>
using namespace std;
#define INF 100000000
#define maxn 100010
int start[maxn],heap[maxn],object[maxn];
int num;
void downadjust(int index,int end)//小堆
{
//cout<<end<<endl;
int lchild,rchild;
int m=index;
int temp;
while(m<=end)
{
lchild=2*m;
rchild=2*m+1;
if(rchild<=end){
if(heap[lchild]>=heap[rchild]){
temp=lchild;
}
else
{ temp=rchild;
}}
else if(lchild<=end&&rchild>end)
{ temp=lchild;
// cout<<temp;
}
if(heap[temp]>heap[m]) {
swap(heap[m],heap[temp]);
m=temp;}
else return;
}
}
bool issame(int heap[]){
for(int i=1;i<=num;i++)
{
if(heap[i]!=object[i]) return false;
}
return true;
}
void showarray()
{
for(int i=1;i<=num;i++) {
cout<<heap[i];
if(i<=num-1) cout<<" ";}
}
void heapsort(){
bool flag=false;
for(int i=num/2;i>=1;i--)
downadjust(i,num);//建堆
// showarray();
int i;
for( i=num;i>2;i--)
{ if(issame(heap)) {
cout<<"Heap Sort"<<endl;
flag=true;break;
}
swap(heap[1],heap[i]);
downadjust(1,i-1);
// showarray();
}
swap(heap[1],heap[i]);
downadjust(1,i-1);
if(flag) showarray();
}
void insertsort()
{ bool flag=false;
for(int i=2;i<=num;i++)
{ if(i!=2&&issame(start)) {
cout<<"Insertion Sort"<<endl;
flag=true;
}
int temp=start[i],j;
for(j=i-1;j>=1;j--)
{
if(start[j]>temp) start[j+1]=start[j];
else break;
}
start[j+1]=temp;
if(flag) i=num;
}
if(flag) for(int i=1;i<=num;i++) {
cout<<start[i];
if(i<=num-1) cout<<" ";}
}
int main()
{ cin>>num;
for(int i=1;i<=num;i++){
cin>>heap[i];
start[i]=heap[i];
}
for(int i=1;i<=num;i++){
cin>>object[i];
}
//if(issame(heap)) return 0;
heapsort();
insertsort();
return 0;
}
cin>>object[i];
}
//if(issame(heap)) return 0;
heapsort();
insertsort();
return 0;
}
阅读全文
0 0
- PAT程序设计考题——甲级1098(Insertion or Heap Sort ) C++实现
- 1098. Insertion or Heap Sort (25) PAT甲级
- [转]PAT甲级练习1098. Insertion or Heap Sort (25)
- PAT甲级1098. Insertion or Heap Sort (25)
- PAT 甲级 1098. Insertion or Heap Sort (25)
- pat 1098 Insertion or Heap Sort
- PAT 1098 Insertion or Heap Sort
- PAT 1098-Insertion or Heap Sort (25)
- PAT程序设计考题——甲级1065( A+B and C (64bit) ) C++实现
- 1098. Insertion or Heap Sort (25)-PAT甲级真题(堆排序)
- Insertion or Heap Sort PAT甲级真题(堆排序)
- Pat(Advanced Level)Practice--1098( Insertion or Heap Sort)
- PAT-Insertion or Heap Sort
- PAT (Advanced Level) Practise 1098 Insertion or Heap Sort (25)
- PAT 1098 Insertion or Heap Sort (25)(待修改)
- PAT (Advanced Level) Practise 1098 Insertion or Heap Sort (25)
- PAT 1098. Insertion or Heap Sort
- PAT 1098. Insertion or Heap Sort (25)
- 最后的证明:8.15
- Linux Centos7 安装 nginx
- yii2整合yar实现RPC
- delphi自带md5的使用
- <防无聊>题解
- PAT程序设计考题——甲级1098(Insertion or Heap Sort ) C++实现
- php的内置接口 arrayaccess
- QOpenGLWidget类
- Spring MVC + JDBC 实现数据库操作
- c/c++面试题
- 用itchat爬取朋友圈好友信息
- SSE2
- EasyDSS RTMP流媒体服务器开发直播同时HLS录像功能实现时移回放
- webpack3最新版本配置研究(一)loader