PAT甲级-1098 Insertion or Heap Sort (25 分)
发布日期:2022-02-10 08:11:00 浏览次数:20 分类:技术文章

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

题目:
分析:插入排序和堆排序,其中堆排的关键:建堆和向下调整。
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define MAX 999999999typedef long long ll;int n,m,k;int jdg(int a[],int b[]){ for(int i = 1;i<=n;i++) if(a[i] != b[i]) return 0; return 1;}void downAdjust(int a[],int k){ int i = k; int j = i * 2; while(i <= n && j <= n) { if(j + 1 <= n && a[j + 1] > a[j]) j++; if(a[j] > a[i]){ swap(a[i], a[j]); i = j; j = i*2; } else break; }}void createHeap(int a[]){ for(int i = n/2; i >= 1; i--) downAdjust(a,i);}int main(){ cin>>n; int ori_a[n + 1],a[n + 1],b[n + 1]; for(int i = 1;i<=n;i++){ cin>>ori_a[i]; a[i] = ori_a[i]; } for(int i = 1;i<=n;i++) cin>>b[i]; int f = 0; for(int i = 2;i<=n;i++) { int t = a[i]; int j = i - 1; for(;j>=1 && t < a[j];j--) a[j + 1] = a[j]; a[j + 1] = t; if(jdg(a,b)){ cout<<"Insertion Sort\n"; t = a[i + 1]; j = i; for(;j>=1 && t < a[j];j--) a[j + 1] = a[j]; a[j + 1] = t; cout<

转载地址:https://blog.csdn.net/qq_43567222/article/details/113822367 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PAT甲级-1103 Integer Factorization (30 分)
下一篇:PAT甲级-1105 Spiral Matrix (25 分)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月08日 20时26分23秒