热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据结构与算法习题replacementselectionsort(置换选择排序)

数据结构与算法习题replacementselectionsort(置换选择排序)TimeLimit:1000msMemoryLimit:65536kBDescrip

数据结构与算法习题 replacement selection sort(置换选择排序)

Time Limit: 1000ms Memory Limit: 65536kB
Description
Given an original run made up of intergers, and a binary minimumheap,you are required touse the heap to implement the replacement selection sort, and output the firstrun. For example, given a run of 29,14,35,13 and a heap(marked as16,19,31,25,21,56,40), the first run got by using replacement selection sort will be 16,19,21,25.
这里写图片描述
Input
The first line contains two intergers m and n, m is the number of the elements of the original run, n is the size of the binary minimum heap.
The second line contains m intergers, that is the original run.
The third line contains n intergers, the elements of the heap that has been constructed(in order, from the top of the heap to the bottom of the heap, from left to right)
Output
The output contains one line, the first run.

Sample Input

4 7
29 14 35 13
16 19 31 25 21 56 40

Sample Output

16 19 21 25


本题对应外排序中的置换选择排序方法。
置换选择排序方法是:先把缓存区的数据建立一个堆,再从输入流读入数据,如果缓存区未满则直接放入缓存区,并调整为堆,否则从缓存区输出堆中的最值元素到输出流中。此时输入数据如果有可能和已经输出的构成顺串则插入缓存区输出流空出的空位中并调整,否则将缓存区堆的最后一个元素换到根结点再调整堆,而将这个元素放到缓存区的堆外,也就是说堆的大小减少一。这样知道堆为空,那么已经输出了一个顺串。将缓存区重建堆开始下一轮产生顺串即可。本题代码模拟了这一行为。


Accepted    2184kB  2ms 861 B   G++
#include

const int SIZE=1000000;
const int INF=0x7FFFFFFF;

int buffer[SIZE],input[SIZE];
int size,last;

void sift(int i)
{
int l=2*i+1,r=2*i+2;
int vl=l if (v return;
if (vl {
buffer[i]=vl;
buffer[l]=v;
sift(l);
}
else
{
buffer[i]=vr;
buffer[r]=v;
sift(r);
}
return;
}

int main()
{
int m,n;
scanf("%d%d",&m,&n);
for (int i=0;i<m;i++)
scanf("%d",&input[i]);
for (int i=0;i scanf("%d",&buffer[i]);
size=n;
last=-INF-1;
for (int i=(n-1)/2;i>=0;i--)
sift(i);
for (int i=0;(i<m)&&(size);i++)
{
last=buffer[0];
if (i!=0)
printf(" ");
printf("%d",buffer[0]);
if (input[i]<last)
{
buffer[0]=buffer[size-1];
buffer[size-1]=input[i];
size--;
}
else
buffer[0]=input[i];
sift(0);
}
printf("\n");
return 0;
}

推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • ServiceStack与Swagger的无缝集成指南
    本文详细介绍了如何在ServiceStack项目中集成Swagger,以实现API文档的自动生成和在线测试。通过本指南,您将了解从配置到部署的完整流程,并掌握如何优化API接口的开发和维护。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • Struts2 深度解析:第八章 输入验证与内建验证机制
    本章将深入探讨 Struts2 中的输入验证机制,重点介绍基于 XWork 验证框架的内建验证程序,如 required、requiredstring 和 stringlength。这些工具简化了开发者的工作,使得验证逻辑更加高效和易于管理。 ... [详细]
author-avatar
闲忙的飞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有