Time Limit: 3 second

Memory Limit: 2 MB

将一个数x插入到有序数列a中,插入后a仍然有序。

Input

第一行输入有序数列a的元素个数

第二行依次输入a的元素,以回车结束

第三行输入x的值

Output

输出插入x后的数列,每个元素用空格隔开,最后用回车结束

Sample Input

10
1 2 11 13 15 20 25 30 35 40
21

Sample Output

1 2 11 13 15 20 21 25 30 35 40

【题解】

这个插入要特别注意 小于最小值和大于最大值的情况。特判是比较明智的选择。。其他的只要for一遍

找到一个I 使得a[i] <= temp temp <= a[i+1]就好。然后从n+1开始for 到 i+2,a[j]=a[j-1];这样就能全部往后移一位。

【代码】

#include <cstdio>
#include <stdlib.h> const int MAXN = 30000; int n,temp,a[MAXN]; void output_ans() //把输出答案的步骤做成一个过程,方便特判。
{
for (int i = 1;i <= n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n+1]);
} void input_data()
{
scanf("%d",&n);
for (int i = 1;i <=n ;i++)
scanf("%d",&a[i]);
scanf("%d",&temp);
if (temp > a[n]) //特判两种情况,即小于最小值和大于最大值的情况
{
a[n+1] = temp;
output_ans();
exit(0);
}
if (temp < a[1])
{
for (int j = n+1;j >= 2;j--)
a[j] = a[j-1];
a[1] = temp;
output_ans();
exit(0);
}
} void get_ans()
{
int j;
for (int i = 1;i <= n-1;i++) //这是判断插入的位置。寻找到题解所需要的i
if (a[i] <= temp && temp <= a[i+1])
{
j = i;
break;
}
for (int k = n+1;k >= j + 2;k--) //这是将所有的数字往后移动一位的方法。
a[k] = a[k-1];
a[j+1] = temp;
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
input_data();
get_ans();
output_ans();
return 0;
}

【2013】将x插入有序数列的更多相关文章

  1. [LeetCode] Merge Sorted Array 混合插入有序数组

    Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume tha ...

  2. [LeetCode] Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  3. office 2013幻灯片中插入SmartArt图形时出现错误下列一个或多个文件由于包含错误而无法运行

    office 2013幻灯片中插入SmartArt图形时出现错误下列一个或多个文件由于包含错误而无法运行 系统:win8 64位 PowerPoint2013 64位 在幻灯片中插入SmartArt图 ...

  4. 有序数列第K小

    有序数列第K小 题目描述 给出两个长度分别为\(n,m\)的单调非递减数列,求出它们合并后的第\(k\)小值. 输入输出格式 输入格式: 第一行三个数,\(n,m,k\)如题意所述: 第二行\(n\) ...

  5. 找出旋转有序数列的中间值python实现

    题目给出一个有序数列随机旋转之后的数列,如原有序数列为:[0,1,2,4,5,6,7] ,旋转之后为[4,5,6,7,0,1,2].假定数列中无重复元素,且数列长度为奇数.求出旋转数列的中间值.如数列 ...

  6. [LeetCode] 21. Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  7. [LeetCode] 88. Merge Sorted Array 混合插入有序数组

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...

  8. LeetCode Summary Ranges (统计有序数列范围)

    题意:给出个有序不重复数列(可能负数),用缩写法记录这个数列. 思路:找每个范围的起始和结束即可. class Solution { public: vector<string> summ ...

  9. 两个有序数列,求中间值 Median of Two Sorted Arrays

    原题: There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the ...

随机推荐

  1. C# wpf程序获取当前程序版本

    C# wpf程序获取当前程序版本 /// <summary>         /// 获取当前系统的版本         /// </summary>         /// ...

  2. HTTP浅谈

    HTTP浅谈 1···什么是HTTP? HTTP协议就是超文本传输协议(HyperText Transfer Protocol),通俗理解是浏览器和web服务器传输数据格式的协议,HTTP协议是一个应 ...

  3. GestureDetector-onfling不执行

    今天在做计算器的时候,遇到了一个问题,就是当我使用GestureDetector的时候,onFling方法不执行,而其他的可以执行.代码如下 @Override public boolean onDo ...

  4. Node组装启动过程

    elasticsearch的启动过程是根据配置和环境组装需要的模块并启动的过程.这一过程就是通过guice注入各个功能模块并启动这些模块,从而得到一个功能完整的node.正如之前所说elasticse ...

  5. nuxt使用QRCode.js 生成二维码

    QRCode.js 是一个用于生成二维码图片的插件, 官方文档 . 我是在nuxt.js(vue官方的服务端渲染方式)项目里使用的QRCode.js: 第一步:看官方文档: 第二步:下载QRCode. ...

  6. JS预解释的总结

    预解释阶段发生在创建了堆内存,让代码执行之前,对当前作用域中带var和function的进行预解释 在浏览器解析执行代码的时候,会提前把带var和function的代码声明或定义,提前放在作用域的最前 ...

  7. ThreadLocal深入理解与内存泄露分析

    ThreadLocal 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本.所以每个线程都能够独立地改变自己的副本.而不会影响其他线程所相应的副本. ...

  8. 卡塔兰数(Catalan)

    卡塔兰数(Catalan) 原理: 令h(0)=1,h(1)=1. 卡塔兰数满足递推式:h(n)=h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0)(n>=2) ...

  9. centos php 安装memcached 扩展 支持sasl

    1.安装sasl yum install cyrus-sasl-lib.x86_64 yum install cyrus-sasl-devel.x86_64 2.下载libmemcached wget ...

  10. Android ---------- Android Bar Bug 总结

    1 怎样设置 ActionBar的Tab 的颜色? // 设置actionBar的颜色 Drawable draw = new ColorDrawable(Color.GREEN); actionBa ...