当前位置:网站首页>Insertion or Heap Sort
Insertion or Heap Sort
2022-08-03 12:59:00 【小L~~~】
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
题目大意:
给你长度为n的两个序列,判断第二个序列是第一个序列经过插入排序还是堆排序之后的结果,然后输出是哪种排序,在输出第二个序列下一趟的排序序列。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 150;
int insert[maxn], heap[maxn], a[maxn], b[maxn], n;
bool judge(int a[], int b[]) {
for(int i = 1; i <= n; i++) {
if(a[i] != b[i]) return false;
}
return true;
}
void print(int a[]) {
printf("%d", a[1]);
for(int i = 2; i <= n; i++) printf(" %d", a[i]);
}
bool insertsort(int a[]) {
for(int i = 2; i <= n; i++) {
if(a[i-1] > a[i]) {
int temp = a[i], j;
for(j = i-1; temp < a[j]; j--) a[j+1] = a[j];
a[j+1] = temp;
}
if(judge(a, b)) {
puts("Insertion Sort");
i++;
if(a[i-1] > a[i]) {
int temp = a[i], j;
for(j = i-1; temp < a[j]; j--) a[j+1] = a[j];
a[j+1] = temp;
}
print(a);
return true;
}
}
return false;
}
void HeapAdjust(int a[], int k, int len) {
a[0] = a[k];
for(int i = k * 2; i <= len; i *= 2) {
if(i < len && a[i] < a[i + 1]) i++;
if(a[0] > a[i]) break;
else {
a[k] = a[i];
k = i;
}
}
a[k] = a[0];
}
void BuildMaxHeap(int a[]) {
for(int i = n / 2; i > 0; i--)
HeapAdjust(a, i, n);
}
void heapsort(int a[]) {
BuildMaxHeap(a);
for(int i = n; i > 1; i--) {
swap(a[1], a[i]);
HeapAdjust(a, 1, i - 1);
if(judge(a, b)) {
puts("Heap Sort");
swap(a[1], a[--i]);
HeapAdjust(a, 1, i-1);
print(a);
}
}
}
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
insert[i] = heap[i] = a[i];
}
for(int i = 1; i <= n; i++) scanf("%d", &b[i]);
if(insertsort(insert)) return 0;
heapsort(heap);
return 0;
}
边栏推荐
- OpenCV 透视变换
- How to make the history record time-stamped before
- In order to counteract the drop in sales and explore the low-end market, Weilai's new brand products are priced as low as 100,000?
- 利用pgsql插件PostGIS 实现地理坐标系数据转换
- Golang strings
- PyTorch构建分类网络模型(Mnist数据集,全连接神经网络)
- An introduction to basic tools for selecting line tools (package church)
- 15. PARTITIONS「建议收藏」
- Golang GMP 原理
- OpenCV perspective transform
猜你喜欢

An工具介绍之形状工具及渐变变形工具

Sogou news - dataset

Image fusion SDDGAN article learning

软件测试面试(四)
![[Microservice] Multi-level cache](/img/58/72e01c789a862c058cba58b9113272.png)
[Microservice] Multi-level cache

超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!

Image fusion GAN-FM study notes

leetcode16 Sum of the closest three numbers (sort + double pointer)

客户:我们系统太多,能不能实现多账号互通?
![[OpenCV] Cascade classifier training model](/img/37/ba57190d3515432700ec97ad14d0b9.png)
[OpenCV] Cascade classifier training model
随机推荐
可视化图表设计Cookbook
欧曼自动挡、银河大马力、行星新产品 欧曼全新产品以燎原之势赢领市场
PyTorch builds a neural network to predict temperature (dataset comparison, CPU vs GPU comparison)
An animation basic element movie clip effect
类和对象(中上)
易观分析:2022年Q2中国网络零售B2C市场交易规模达23444.7亿元
An introduction to the camera
Database basics one (MySQL) [easy to understand]
有趣的opencv-记录图片二值化和相似度实现
Oracle安装完毕(系统盘),从系统盘转移到数据盘
GameFi 行业下滑但未出局| June Report
Last blog for July
Blog records life
Jmeter use
leetcode 11. 盛最多水的容器
An动画基础之元件的影片剪辑动画与传统补间
Redis 6 的多线程
Free Internet fax platform fax _ don't show number
SQL分页查询_Sql根据某个字段分页
[R] Use grafify for statistical plotting, ANOVA, intervention comparisons, and more!