09-排序3 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 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 (≤). Then in the next line, Nintegers 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
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = ;
int origin[N],tempOri[N],changed[N];
int n; bool showArray(int A[]){ //
for(int i = ; i <= n; i++){
printf("%d",A[i]); //
if(i < n) printf(" ");
}
printf("\n");
} bool isSame(int A[],int B[]){
for(int i = ; i <= n; i++){
if(A[i] != B[i]) return false;
}
return true;
} bool insertSort(){
bool flag = false;
for(int i = ; i <= n; i++){ //
if(i != && isSame(tempOri,changed)){ //
flag = true;
}
sort(tempOri,tempOri+i+); //
if(flag == true){
return true;
}
}
return false;
} void downAdjust(int low,int high){
int i = low, j = i*;
while(j <= high){
if(j < high && tempOri[j] < tempOri[j+]){
j = j+;
}
if(tempOri[i] < tempOri[j]){
swap(tempOri[i],tempOri[j]);
i = j;
j = j*;
}else{
break;
}
}
} void heap(){
bool flag = false;
for(int i = n/; i >=; i--){
downAdjust(i,n);
}
for(int i = n; i > ; i--){
if(i != n && isSame(tempOri,changed)){
flag = true;
}
swap(tempOri[i],tempOri[]);
downAdjust(,i-);
if(flag == true){
showArray(tempOri);
return; //
}
} } int main(){
scanf("%d",&n);
for(int i = ; i <= n; i++){
scanf("%d",&origin[i]);
tempOri[i] = origin[i];
}
for(int i = ; i <= n; i++){
scanf("%d",&changed[i]);
}
if(insertSort()){
printf("Insertion Sort\n");
showArray(tempOri);
}else{
printf("Heap Sort\n");
for(int i = ; i <= n; i++){
tempOri[i] = origin[i];
}
heap();
}
return ;
}
09-排序3 Insertion or Heap Sort (25 分)的更多相关文章
- PTA 09-排序3 Insertion or Heap Sort   (25分)
		
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/676 5-14 Insertion or Heap Sort (25分) Accor ...
 - 【PAT甲级】1098 Insertion or Heap Sort (25 分)
		
题意: 输入一个正整数N(<=100),接着输入两行N个数,表示原数组和经过一定次数排序后的数组.判断是经过插入排序还是堆排序并输出再次经过该排序后的数组(数据保证答案唯一). AAAAAcce ...
 - 09-排序3 Insertion or Heap Sort (25 分)
		
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
 - 1098 Insertion or Heap Sort (25分)
		
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
 - pat1098. Insertion or Heap Sort (25)
		
1098. Insertion or Heap Sort (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
 - pat 甲级 1098. Insertion or Heap Sort (25)
		
1098. Insertion or Heap Sort (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
 - PAT甲题题解1098. Insertion or Heap Sort (25)-(插入排序和堆排序)
		
题目就是给两个序列,第一个是排序前的,第二个是排序中的,判断它是采用插入排序还是堆排序,并且输出下一次操作后的序列. 插入排序的特点就是,前面是从小到大排列的,后面就与原序列相同. 堆排序的特点就是, ...
 - PAT Advanced 1098  Insertion or Heap Sort (25) [heap sort(堆排序)]
		
题目 According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and ...
 - 1098. Insertion or Heap Sort (25)
		
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
 - PAT (Advanced Level) 1098. Insertion or Heap Sort (25)
		
简单题.判断一下是插排还是堆排. #include<cstdio> #include<cstring> #include<cmath> #include<ve ...
 
随机推荐
- import time
			
时间相关的操作,时间有三种表示方式: 时间戳 1970年1月1日之后的秒,即:time.time() 格式化的字符串 2014-11-11 11:11, 即:t ...
 - day17-jdbc 6.Connection介绍
			
package cn.itcast.jdbc; import com.mysql.jdbc.Connection; import java.sql.DriverManager; import java ...
 - SpringBoot11 读取properties文件、发送邮件
			
1 读取properties文件 1.1 ResourceBundle 帮助我们事先国际化 1.1.1 前提 properties文件的命名方式必须体现除语言和国别 例如:test_zh_CN.pro ...
 - C++ 面向对象: I/O对象的应用
			
1. 补充完整从text.txt文件读取数据后,再写入in.txt文件.2. 完成从text.txt文件读取数据后,进行排序,再写入in.txt文件.数据量自行设定.3. 请解决在主程序文件中加载多个 ...
 - linux时区修改为中国时区
			
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 - 24-Fibonacci(dfs+剪枝)
			
http://acm.hdu.edu.cn/showproblem.php?pid=5167 Fibonacci Time Limit: 2000/1000 MS (Java/Others) M ...
 - Linux-shell获取天气
			
用Linux中的shell获取天气,本来觉的比较难,原来,真简单,个位数的代码就搞定. 获取对应城市天气 所有天气信息都从中国天气网获取.每一个城市多会对应一个id(比如,北京为101010100,因 ...
 - ubuntu 15.04默认root用户登陆
			
1:给root用户设置密码 sudo passwd root 2:修改/etc/lightdm/lightdm.conf [SeatDefaults]autologin-guest=falseauto ...
 - C++面试笔记--宏定义
			
宏定义是一个比较常考的考点,所以我归纳总结了一下近年的宏定义的题目 //宏定义面试题1.cpp//What is the output of the following code?[中国台湾某著名杀毒 ...
 - 修改Oracle游标数及排查游标问题相关SQL
			
查看当前游标数show parameter open_cursors; 修改游标最大数 ; commit; 查看游标消费情况 select o.sid, osuser, machine, count( ...