zoukankan      html  css  js  c++  java
  • zzuli oj 1118 数列有序

    题意描述:
    一个非递减有序的整型数组有n个元素,给定一个整数num,将num插入该序列的适当位置,使序列仍保持非递减有序。
    要求定义一个函数insert(),将整数num插入在数组a的适当位置上,函数原型如下:
    int insert(int a[], int n, int num);
    另外函数仍然调用以前定义过的函数PrintArr()输出数组所有元素。
    解题思路:
    题目分为三种情况:1.被插入数是第一个。2.被插入数是最后一个。3.被插入数位于中间。
    输入有三行。第一行是一个正整数n,n<=1000。第二行是n个整数,第三行是待插入整数num。
    输出非递减有序的n+1个整数,数据之间用空格隔开。输出占一行。
    输出最后一个元素后面没有空格。
    代码实现:
     1 #include<stdio.h>
     2 void PrintArr(int a[],int n)
     3 {
     4  int i;
     5     for(i=0;i<=n;i++)
     6  {
     7  if(i==0)printf("%d",a[0]);
     8  else printf(" %d",a[i]); 
     9  } 
    10 }
    11 int insert(int a[], int n, int num)
    12 {
    13  int i,t;
    14  if(n==1)
    15  {
    16   if(num>a[0])
    17   a[1]=num;
    18   else 
    19   {
    20       a[1]=a[0];
    21       a[0]=num;
    22   }
    23  }
    24  else if(num>a[n-1])a[n]=num;
    25  else {
    26   if(a[0]>num)
    27   {
    28    for(i=n;i>0;i--)
    29    a[i]=a[i-1];
    30    a[0]=num;
    31   }
    32   for(i=0;i<n;i++)
    33   {
    34       if(a[i]<num&&a[i+1]>num)
    35    {
    36     t=i+1;
    37     for(i=n;i>t;i--)
    38     a[i]=a[i-1];
    39     a[t]=num;
    40    }
    41   }
    42   } 
    43     PrintArr(a, n);
    44 }
    45 int main()
    46 {
    47  int n,num,i;
    48  int a[1020];
    49  scanf("%d",&n);
    50  for(i=0;i<n;i++)
    51  {
    52   scanf("%d",&a[i]);
    53  }
    54  scanf("%d",&num);
    55  insert( a,  n,  num);
    56  return 0;
    57 }
    易错分析:
    1.题目情况较多,应该先列好框架,再分条编写。
    2.函数的最后结果需要带入下一个函数应用可以先编写被带入函数,在直接将函数带入。
    3.最后一个元素后面没有空格应该先把第一个分离出来,让之后的每个元素前带空格。
  • 相关阅读:
    获取计算机名称
    imagelist用法
    cxgrid的ImageComboBox属性学习
    MlskincolorButton使用方法
    delphi实现窗体组建随窗体大小改变而改变
    判断路径下文件是否存在
    Delphi 按Esc快捷键退出程序的简单方法
    pagecontrol
    LinkedList源码解析
    ArrayList源码分析
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/10389334.html
Copyright © 2011-2022 走看看