hdu 2019:数列有序!(数据结构,直接插入排序+折半插入排序)
数列有序!
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 2 Accepted Submission(s) : 1
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
3 3
1 2 4
0 0
Sample Output
1 2 3 4
Author
Source
#include <iostream>
using namespace std;
int main()
{
int n,m;
int a[];
while(cin>>n>>m){
if(n== && m==) break;
for(int i=;i<=n;i++) //输入数列
cin>>a[i];
for(int i=;i<=n;i++){
if(m < a[i]){ //找到m应该插入的位置
for(int j=n;j>=i;j--){ //从这个位置开始将数列依次后推一个格
a[j+] = a[j];
}
a[i] = m; //将m放在这个位置上
break;
}
}
for(int i=;i<=n+;i++) //输出数列
if(i==n+)
cout<<a[i]<<endl;
else
cout<<a[i]<<' ';
}
return ;
}
#include <iostream>
using namespace std;
int main()
{
int n,m;
int a[];
while(cin>>n>>m){
if(n== && m==) break;
for(int i=;i<=n;i++) //输入数列
cin>>a[i]; //折半查找 m
int left=,right=n,mid;
while(left<=right){
mid = (left + right)/;
if(a[mid]<=m){
left = mid+;
}
else
right = mid-;
}
//cout<<right+1<<endl; for(int j=n;j>=right+;j--){ //从这个位置开始将数列依次后推一位
a[j+] = a[j];
}
a[right+] = m; //将m放在这个位置上 for(int i=;i<=n+;i++) //输出数列
if(i==n+)
cout<<a[i]<<endl;
else
cout<<a[i]<<' ';
}
return ;
}
Freecode : www.cnblogs.com/yym2013
hdu 2019:数列有序!(数据结构,直接插入排序+折半插入排序)的更多相关文章
- HDU 2019 数列有序!
Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %I64d , %I64u Java class name ...
- 数据结构之 排序---折半插入排序(时间复杂度 O(nlog2 n) )
排序 Time Limit: 1000MS Memory limit: 32678K 题目描述 给你N(N<=100)个数,请你按照从小到大的顺序输出. 输入 输入数据第一行是一个正整数N,第二 ...
- 内部排序->插入排序->其它插入排序->折半插入排序
文字描述 和直接插入排序比较,只是把“查找”操作利用“折半查找”来实现,由此进行的插入排序叫做折半插入排序. 示意图 略 算法分析 和直接插入排序比,减少了比较次数,但是移动次数没有变,所以折半插入排 ...
- HDOJ 2019 数列有序!
#include<vector> #include<iostream> #include<algorithm> #include<cstdio> usi ...
- 杭电2019 数列有序!(STL解法)
由于这题对于学过数据结构的我来说,真的是很简单,为了减少时间上的损失,链表无疑是最好的选择(因为数组要往后移位子).然后,因为最近想玩些STL的骚操作,所以就用<list>了,然后顺便学了 ...
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...
- Java常见排序算法之折半插入排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- ZT 二分插入排序也称折半插入排序
二分插入排序也称折半插入排序,基本思想是:设数列[0....n]分为两部分一部分是[0...i]为有序序列,另一部分是[i+1.....n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 ...
- 排序系列 之 折半插入排序算法 —— Java实现
基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...
随机推荐
- 〖Linux〗(2013.08.02)VIM74b+YouCompleteMe,VIM代码编辑器补全能手
1. 编译和安装vim74b(参考:http://t.cn/zQa8R7h ) sudo apt-get install -y hgsvn libncurses5-dev libgnome2-dev ...
- 一个模块包含多目录和源文件,Makefile写法
假设这样一种情况,一个内核模块有多个目录多个源文件组成,编译成模块是Makefile如何编写呢? 我这边测试通过的一种方法介绍一下.假设该模块的组成方式如下: module--> a.c ...
- 转:RHEL6.3 安装GCC 记录
本文参考:http://blog.163.com/phys_atom/blog/static/1676445532012229814992/ 如果直接使用GUN GCC官方的源码来安装是不成功的,因为 ...
- 转:sock_ev——linux平台socket事件框架(logTrace) .
写代码要有调试log,采用syslog的输出:一般会输出到"/var/log/messages" /**************************************** ...
- Ruby 和 Python 分析器是如何工作的?
你好! 我作为一名编写Ruby profiler的先驱,我想对现有的Ruby和Python profiler如何工作进行一次调查. 这也有助于回答很多人的问题:“你怎么写一个profiler?” 在这 ...
- 总结一些js自定义的函数
1.dayin() 作用:将id为dayin的内容,新建页面并打印,可解决打印某页面中的部分内容的问题. 使用方法:将要打印的内容通过 <span id="dayin"> ...
- 报错 System.ComponentModel.Win32Exception:拒绝访问,如何以管理员身份调试应用程序
打开程序集的属性窗口,找到“安全性”设置,其中有一个“启用 ClickOnce 安全性设置”,勾选后再反勾选该复选框. 此时在解决方案资源管理器中,就可以找到 app.manifest 文件,勾选“启 ...
- vue使用axios,进行网络请求
1.首先自己创建一个组件: https://www.cnblogs.com/fps2tao/p/9559291.html 2.安装:axios(可以npm安装,也可以下载js引入文件) npm ins ...
- unity, EventType.MouseUp注意事项
如果鼠标移出了窗口范围,则即使鼠标抬起也不会收到EventType.MouseUp消息,所以只写 if(event==EventType.MouseUp){ 执行某操作 } 是错误的,会导致非常奇怪的 ...
- 设置Mybatis打印调试sql的两种方式
http://blog.csdn.net/gao36951/article/details/53641432 ********************************************* ...