数列有序!

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

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。

Input

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

Output

对于每个测试实例,输出插入新的元素后的数列。

Sample Input

3 3
1 2 4
0 0

Sample Output

1 2 3 4

Author

lcy

Source

C语言程序设计练习(三)

 
  数据结构:插入排序,水题。
  训练插入排序思想的一道水题。思路是先查找出m应该插入的位置,然后将这个位置开始的数依次后推一位,再将m插入到这个位置。这里的查找可以用直接查找和折半查找两种,后者快一些。
  注意输出格式,最后一位数字后面不能有空格。
  AC代码:
 
1)直接插入排序
 #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 ;
}
2)折半插入排序
 #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:数列有序!(数据结构,直接插入排序+折半插入排序)的更多相关文章

  1. HDU 2019 数列有序!

    Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %I64d , %I64u   Java class name ...

  2. 数据结构之 排序---折半插入排序(时间复杂度 O(nlog2 n) )

    排序 Time Limit: 1000MS Memory limit: 32678K 题目描述 给你N(N<=100)个数,请你按照从小到大的顺序输出. 输入 输入数据第一行是一个正整数N,第二 ...

  3. 内部排序->插入排序->其它插入排序->折半插入排序

    文字描述 和直接插入排序比较,只是把“查找”操作利用“折半查找”来实现,由此进行的插入排序叫做折半插入排序. 示意图 略 算法分析 和直接插入排序比,减少了比较次数,但是移动次数没有变,所以折半插入排 ...

  4. HDOJ 2019 数列有序!

    #include<vector> #include<iostream> #include<algorithm> #include<cstdio> usi ...

  5. 杭电2019 数列有序!(STL解法)

    由于这题对于学过数据结构的我来说,真的是很简单,为了减少时间上的损失,链表无疑是最好的选择(因为数组要往后移位子).然后,因为最近想玩些STL的骚操作,所以就用<list>了,然后顺便学了 ...

  6. 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法

    注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...

  7. Java常见排序算法之折半插入排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  8. ZT 二分插入排序也称折半插入排序

    二分插入排序也称折半插入排序,基本思想是:设数列[0....n]分为两部分一部分是[0...i]为有序序列,另一部分是[i+1.....n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 ...

  9. 排序系列 之 折半插入排序算法 —— Java实现

    基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...

随机推荐

  1. 三次握手的第三个ACK包丢了,TCP的处理方式

    众所周知,TCP建立采用的是三次握手.最近在看论文的时候,突然想到,如果第三个ACK报文丢失了,TCP建立是否还会成功?TCP是如何处理的呢?在网上搜了一圈,看到了这篇文章: 三次握手的第三个ACK包 ...

  2. Android 自己定义View (四) 视频音量调控

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24529807 今天没事逛eoe,看见有人求助要做一个以下的效果,我看以下一哥们说 ...

  3. 【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页

    废话不多说,直接上代码: 把下面的js放在html的</body>即可 <!-- 设置页面定时器,3秒查询一次数据库该订单状态,ok就跳走 --xzz1115> <scr ...

  4. 【NEWS】 ADempiere发布ADempiere 3.8.0路线图【2013年7月28日】

    发布源:http://osssme.org/cms/?q=node/17 本以为ADempiere”已死“,但是看到ADempiere的WIKI上大概在从5月28日开始添加WIKI以来,经过多次更新后 ...

  5. Python-线程的生命周期

    线程的生命周期 所谓的xx生命周期,其实就是某对象的包含产生和销毁的一张状态图.线程的生命周期如下图所示: 各状态的说明如下: New新建.新创建的线程经过初始化后,进入Runnable状态. Run ...

  6. TensorFlow 安装 Ubuntu14.04

    1.Install pip (or pip3 for python3) if it is not already installed: # Ubuntu/Linux 64-bit $ sudo apt ...

  7. [k8s]metricbeat的kubernetes模块&kube-metric模块

    正确姿势启动metricbeat metricbeat.modules: - module: system metricsets: - cpu - filesystem - memory - netw ...

  8. 02、获取 WebView 控件中,加载的 HTML 网页内容

    在开发 app 的时候,WebView 是经常使用的控件.而且有时需要向 WebView 中的 html 内容 注入额外的 js 进行操作.这里记录一下在当前 WebView 控件中,获取 html ...

  9. meta 标签的学习

    meta name="viewport" content="width=device-width,initial-scale=1.0" 解释 <meta ...

  10. 彻底征服 Spring AOP 之 理论篇

    基本知识 其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, ...