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个元素:排序过程即每次从无序表中 ...
随机推荐
- 三次握手的第三个ACK包丢了,TCP的处理方式
众所周知,TCP建立采用的是三次握手.最近在看论文的时候,突然想到,如果第三个ACK报文丢失了,TCP建立是否还会成功?TCP是如何处理的呢?在网上搜了一圈,看到了这篇文章: 三次握手的第三个ACK包 ...
- Android 自己定义View (四) 视频音量调控
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24529807 今天没事逛eoe,看见有人求助要做一个以下的效果,我看以下一哥们说 ...
- 【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页
废话不多说,直接上代码: 把下面的js放在html的</body>即可 <!-- 设置页面定时器,3秒查询一次数据库该订单状态,ok就跳走 --xzz1115> <scr ...
- 【NEWS】 ADempiere发布ADempiere 3.8.0路线图【2013年7月28日】
发布源:http://osssme.org/cms/?q=node/17 本以为ADempiere”已死“,但是看到ADempiere的WIKI上大概在从5月28日开始添加WIKI以来,经过多次更新后 ...
- Python-线程的生命周期
线程的生命周期 所谓的xx生命周期,其实就是某对象的包含产生和销毁的一张状态图.线程的生命周期如下图所示: 各状态的说明如下: New新建.新创建的线程经过初始化后,进入Runnable状态. Run ...
- TensorFlow 安装 Ubuntu14.04
1.Install pip (or pip3 for python3) if it is not already installed: # Ubuntu/Linux 64-bit $ sudo apt ...
- [k8s]metricbeat的kubernetes模块&kube-metric模块
正确姿势启动metricbeat metricbeat.modules: - module: system metricsets: - cpu - filesystem - memory - netw ...
- 02、获取 WebView 控件中,加载的 HTML 网页内容
在开发 app 的时候,WebView 是经常使用的控件.而且有时需要向 WebView 中的 html 内容 注入额外的 js 进行操作.这里记录一下在当前 WebView 控件中,获取 html ...
- meta 标签的学习
meta name="viewport" content="width=device-width,initial-scale=1.0" 解释 <meta ...
- 彻底征服 Spring AOP 之 理论篇
基本知识 其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, ...