PAT甲级1098

PAT甲级真题 1098 Insertion or Heap Sort (25分) C++实现(插入排序、堆排序) 题目 According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list 阅读详情

PAT甲级1098

题目:
According to Wikipedia:

Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, and inserts it there. It repeats until no input elements remain.

Heap sort divides its input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element and moving that to the sorted region. it involves the use of a heap data structure rather than a linear-time search to find the maximum.

Now given the initial sequence of integers, together with a sequence which is a result of several iterations of some sorting method, can you tell which sorting method we are using?

Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤100). Then in the next line, N integers are given as the initial sequence. The last line contains the partially sorted sequence of the N numbers. It is assumed that the target sequence is always ascending. All the numbers in a line are separated by a space.

Output Specification:
For each test case, print in the first line either “Insertion Sort” or “Heap Sort” to indicate the method used to obtain the partial result. Then run this method for one more iteration and output in the second line the resulting sequence. It is guaranteed that the answer is unique for each test case. All the numbers in a line must be separated by a space, and there must be no extra space at the end of the line.

Sample Input 1:
10
3 1 2 8 7 5 9 4 6 0
1 2 3 7 8 5 9 4 6 0
Sample Output 1:
Insertion Sort
1 2 3 5 7 8 9 4 6 0
Sample Input 2:
10
3 1 2 8 7 5 9 4 6 0
6 4 5 1 0 3 2 7 8 9
Sample Output 2:
Heap Sort
5 4 3 1 0 2 6 7 8 9

题目大意:给出两串序列,判断是插入排序还是堆排序,并且输出接下来一轮的数据
插入排序特征是到插入的这个数为止,之前全部有序,之后全部无序,所以只要找到第一个非递增的数字,看其之后的序列与原序列对应位置是否相等,如果相同就是插入,不同则是堆排。输出插入排序的时候可以直接用sort函数即可。堆排序每趟从后往前挨个下溯非叶节点,到某一时刻与给出的中间序列相同跳出,然后再排一轮即可。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> initial,partial;
void PercDown(int start,int end){
	int parent=start,child;
	int tmp=initial[parent];
	for(;parent*2<=end;parent=child){
		child=2*parent;
		if((child!=end)&&initial[child]<initial[child+1]) child++;	//取两个孩子中较大的一个
		if(tmp<initial[child]) initial[parent]=initial[child];
		else break;
	}
	initial[parent]=tmp;
}
int main(){
	int n,tmp,i,j;
	scanf("%d",&n);
	initial.push_back(0);
	partial.push_back(0);	//方便之后下标从1开始
	for(i=0;i<n;i++){
		scanf("%d",&tmp);
		initial.push_back(tmp);
	}
	for(i=0;i<n;i++){
		scanf("%d",&tmp);
		partial.push_back(tmp);
	}
	for(i=0;i<n;i++){
		if(partial[i+1]<partial[i]) break;
	}
	for(j=i+1;j<n;j++){
		if(initial[j]!=partial[j]) break;
	}
	if(j==n){
		printf("Insertion Sort\n");
		sort(partial.begin()+1,partial.begin()+i+2);
		for(i=1;i<=n;i++){
			if(i!=1) printf(" ");
			printf("%d",partial[i]);
		}
	}
	else{
		printf("Heap Sort\n");
		for(i=n;i>=1;i--){
			for(j=i/2;j>0;j--)
				PercDown(j,i);
			if(initial==partial) break;
			swap(initial[i],initial[1]);
		}
		swap(initial[i],initial[1]);
		i--;
		for(j=i/2;j>0;j--)
			PercDown(j,i);
		for(i=1;i<=n;i++){
			if(i!=1) printf(" ");
			printf("%d",initial[i]);
		}
	}
	system("pause");
	return 0;
}
波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元 阅读详情

相关推荐

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 350

PAT——1098 Insertion or Heap Sort 甲级(超详细注释)

1098 Insertion or Heap Sort题目题意代码思路AC代码参考 题目 https://pintia.cn/problem-sets/994805342720868352/problems/994805368847187968 题意 首先,不了解堆排序流程的同学可以看看我的第二篇参考文章(插入排序较为简单,不会的同学自行学习) 题目给出两个序列a、b,a为最初序列,b为排序过的序列,问排序方式是插入排序还是堆排序,并输出下一步的排序结果 代码思路 代码思路详见参考文章第一篇 需要说明的是,

ljhsq的博客 492

DeepSeek赋能CAD:从API调用到智能设计工作流的实战指南

本文详细介绍了如何利用DeepSeek AI技术赋能CAD设计工作流,从API调用到智能设计优化的实战指南。通过Python环境配置、API接入详解以及四大智能设计场景的实战案例,帮助CAD设计师实现参数化设计优化、自动规范检查等高效工作方式,大幅提升设计效率和质量。

weixin_29092579的博客 623

PAT 甲级 1098  Insertion or Heap Sort

1098 Insertion or Heap Sort (25 point(s)) According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion so...

漫浸天空的雨色的备忘录~ 825

UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。

MarcoPro的博客 1633

拼多多爬虫实战:逆向sign与anti_content动态参数解析

现代电商爬虫已远超基础HTTP请求范畴,其核心在于理解服务端如何通过动态签名(sign)、设备指纹、行为验证等多维机制定义‘合法请求’。拼多多作为典型代表,将价格、销量、评价等关键数据完全剥离HTML,转由强校验API返回,依赖HMAC-SHA256嵌套签名、anti_content前端加密载荷及滑动验证token闭环。这类机制本质上是客户端环境可信度与请求上下文一致性的实时博弈,技术价值在于保障数据安全与业务风控。典型应用场景包括竞品价格监控、销量趋势分析、评价情感挖掘等需高保真数据的商业分析任务。本文聚

weixin_29741447的博客 833

PAT 乙级题解 ——1098 岩洞施工

下面的两幅图分别给出了岩洞的剖面图,深蓝色的折线勾勒出岩洞顶部和底部的轮廓。图 1 是有可能的,绿色部分显示直径为 1 的管道可以送入。图 2 就不可能,除非把顶部或底部的突出部分削掉 1 个单位的高度。随后两行数据,从左到右顺次给出采样点的纵坐标:第 1 行是岩洞顶部的采样点,第 2 行是岩洞底部的采样点。当顶部最低点坐标与底部最高点坐标的差 > = 1 时,可以通过长管道, 最大直径就是 顶部最低点坐标 减去 底部最高点坐标。题目保证输入数据是合理的,即岩洞底部的轮廓线不会与顶部轮廓线交叉。

As_h_的博客 357

Honeywell EPKS 核心功能块组态与执行调度实战解析

本文深入解析Honeywell EPKS系统的核心功能块组态与执行调度技术,涵盖控制模块(CM)、顺序控制模块(SCM)和输入输出模块(IOM)的配置方法。通过实战案例分享执行顺序(ORDERINCM)和CEE执行周期的优化策略,帮助工程师提升工业自动化系统的控制精度和运行效率。

weixin_28724319的博客 414

PAT 甲级1098(测试点2答案错误)

和A1089一样的陷阱,初始序列不参与比较是否与目标序列相同(也就是说,题目中说的中间序列是不包括初始序列的,详见注释) 正确代码: #include<iostream> #include<algorithm> using namespace std; int n, origin[110], change[110], tempOri[110]; void showArr() { for(int i = 1;i<=n;i++) { if(i != 1) cout.

学习笔记,不喜勿喷! 247

Altium AD20的PCB板框绘制、定义板子形状、重新设置原点、放置尺寸标注

AD20的板框绘制与以前的版本不同,以前板框是在KeepOut层,而在AD20中没有这个层,绘制板框需要到机械层Mechanical1。 板框大小评估 首先进行板框大小评估。 工具 - 器件摆放 - 在矩形区域摆放。 之后通过鼠标框选矩形区域,元件会自动按照框选的范围进行摆放。这个操作可以重复多次,最后大致得出需要的板框尺寸。确定好后右键。 板框绘制,重新定义板子形状 点击下方的 Mechanical1,切换到机械层。放置线条,根据元件摆放来绘制PCB大致的形状,将元件完全包裹。

Mark_md的博客 10万+

美团外卖 mtgsig 1.2 逆向工程与补环境实战指南

本文深入解析了美团外卖核心风控参数mtgsig 1.2的生成机制与逆向实战。通过拆解其复杂的JSON结构,揭示了设备指纹、环境信息加密等关键字段。重点阐述了在Node.js中模拟浏览器环境(补环境)的核心方法,包括DOM/BOM对象、本地存储及Canvas/WebGL等高级指纹的模拟技巧,为安全研究和合规自动化测试提供了一套完整的技术指南。

uber9的博客 409

1098 岩洞施工 (20 分)C语言

1098 岩洞施工 (20 分)C语言

qq_53984615的博客 815

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

本文详细介绍了基于YOLOv5/YOLOv6/YOLOv7/YOLOv8深度学习模型的远距离停车位检测系统的完整实现方案。该系统能够准确识别200米范围内的停车位状态,为智能停车场管理系统、自动驾驶车辆提供关键的视觉感知能力。文章涵盖算法原理、数据集构建、模型训练、系统实现及优化策略,并提供完整的代码实现和UI界面设计。关键词:YOLO系列,深度学习,停车位检测,计算机视觉,智能交通系统pythonimport cv2import os"""创建数据存储目录""""""定时采集图像"""

YOLO 185

PAT甲级 A1098

PAT甲级 A1098 题目详情 1098 Insertion or Heap Sort (25分) According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds

weixin_44065549的博客 1448

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PAT甲级——1098 Insertion or Heap Sort (插入排序、堆排序)

1098Insertion or Heap Sort(25分) According to Wikipedia: Insertion sortiterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort remo...

小熊猫的博客 504

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

PAT 甲级 1098 Insertion or Heap Sort 测试点4

先将第1个元素和第 i 个元素互换(第i个元素是从后往前第一个不是排好的元素,第一个元素一定是在堆中最大的元素,将两个元素互换那1~i-1就是没排好的了。学习了柳神的判断语句,用一个j来代替要换位置的坐标就可以少进行很多重复的判断(一开始括号没对上还找问题找了很久QAQ)当时卡在这里卡了很久......一直以为是堆排序写错了QAQ。然后就是把第一个元素下沉,一开始写了一坨if判断,但是。插入排序就是前面是从小到大排好了,后面位置都不变。如果前后两个元素相等也是可以算排好的(测试点4)

bzx13968552554的博客 338

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【PAT甲级 - C++题解】1098 Insertion or Heap Sort

📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!

Newin2020的博客 484

PAT甲级1098:插入排序与堆排序中间状态模拟与判断

排序算法是计算机科学的基础,插入排序和堆排序作为经典算法,其迭代过程与中间状态常被用于考察对算法执行细节的理解。插入排序通过逐步构建有序前缀,堆排序则利用大顶堆维护与交换实现原地排序,两者在中间序列上可能呈现相似特征,但核心原理不同。掌握这些原理不仅能提升算法模拟能力,还能在PAT甲级等编程考试中快速解题。本文以PAT甲级1098题为例,深入解析插入排序和堆排序的中间状态特征、判断优先级及代码实现,帮助读者透彻理解排序算法的迭代过程。

weixin_33462167的博客 252

PAT甲级1098题解:插入排序与堆排序中间态判断技巧

排序算法是计算机科学的基础,插入排序和堆排序作为经典算法,其执行过程的中间态识别是算法学习与工程实践中的常见问题。插入排序的核心原理是维护有序前缀,未处理部分保持不变;堆排序则基于大顶堆性质,逐步将最大值移至末尾。理解这些不变量,能有效提升算法调试与优化能力,广泛应用于PAT考试、面试准备及系统开发中的排序模块。本文以PAT甲级1098为例,深入解析如何通过前缀有序性和后缀不变性快速区分两种排序的中间态,并给出高效实现。

weixin_29611239的博客 227

1098 Insertion or Heap Sort (PAT甲级)

已经根据柳婼的解法改进了一些,但她的代码还是简洁不少。

linh2006的博客 519

PAT 甲级 A1098

主要讲错误点: 算法笔记给出的一组用例: 4 3 4 2 1 3 4 2 1 //ouput Insertion Sort 2 3 4 1 可以用来检查自己的匹配插入排序的函数是否正确。有没有正确的处理初始序列和中间序列一致的情况。 代码如下: #include<iostream> #include<stdio.h> #include<stdlib.h> #i...

just_a_unicorn的博客 270

PAT 甲级 1098 PAT Ranking 个人错误总结

heapsort 主要写down和初始化函数。 heapsort倒序,我的错误在heapsort中引用down的top写错了,导致永远不会输出有序序列。 另外这种题的点中有一个是sort不考虑初始序列。 AC代码:(有点乱) #include<bits/stdc++.h> using namespace std; int num[101]={}; int ans[101]={}; int in[101]={}; int heap[101]={}; bool insert(int n){ f

☁的博客 138

PAT甲级题解 1098

注意堆排序的调整 找到一个大的到堆顶 #include<bits/stdc++.h> using namespace std; //堆排序是每次找到一个最大的放到最后 const int MAXN = 110; int a[MAXN]; int b[MAXN]; void downAdjust(int a[],int low,int height) { int i = 1; int j = i * 2; while(j <= height) {

zmh657628320的博客 147

PAT甲级1098题解:插入排序与堆排序的中间状态识别

排序算法是计算机科学的基础,插入排序和堆排序作为经典算法,其执行过程的中间状态特征常被用于算法识别与调试。插入排序的中间状态表现为前缀有序,堆排序则表现为后缀有序且前缀保持堆结构。理解这些特征不仅能提升算法调试效率,还能在优先队列、Top K问题等场景中发挥技术价值。在PAT甲级等算法竞赛中,常需根据中间序列判断排序类型并预测下一步迭代结果。本文以PAT甲级1098题为例,深入剖析插入排序与堆排序的中间状态识别方法,提供完整实现与常见坑点分析。

weixin_30984001的博客 234

PAT甲级 1098 Insertion or Heap Sort

浙江大学PAT题目解答内容. Contribute to ZouJiu1/PAT development by creating an account on GitHub.GitHub - ZouJiu1/PAT: 浙江大学PAT题目解答内容。

邹九的个人博客 174

PAT(甲级)1098

1098. Insertion or Heap Sort (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue According to Wikipedia: Insertio

Leonardo1897的博客 543
上一篇: PAT甲级1066
下一篇: PAT甲级1034
zerohawk
博客等级 码龄8年 3粉丝 78原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值