(第七列)C语言:在排好序的数列中插入一个新的数,原来这么简单?

简介: (第七列)C语言:在排好序的数列中插入一个新的数,原来这么简单?

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。


代码解析如下:

#include<stdio.h>
int main()
{
    //首先定义两个数组,一个存放原始序列,另一个存放加入新数之后的新序列。
  int t[10],s[11];       
  int i,j,k;
  printf("请输入十个有序数:");
  for(i=0;i<10;i++){
    scanf("%d",&t[i]);   //键盘输入十个有序数列。 
  }
    /* 把换行符去掉,为了进行第二次输入。如果没有getchar(),有些编译器无法二次输入。
       如果你的编译器不需要它也能二次输入,则可以去掉。*/
  getchar();       
  printf("请输入要加入的数:");
  scanf("%d",&k);     //输入要加入的数。 
  for(i=0;i<9;i++)
  {
        //首先要确定这个数的大小在哪个范围。
    if((k>=t[i]&&k<=t[i+1])||(k<=t[i]&&k>=t[i+1]))  
    {
        //确定之后,记录这个数的范围的较小值,如 2<k<4 则  记录 j=2
      j=i;     
    }
  }
  for(i=0;i<11;i++){
    if(i<j){
            //如果 i 在 j 之前,则直接将 t 数组中的数对应放到 s 数组中。
      s[i]=t[i];     
    }
    else if(i==j){
            //如果 i 等于 j ,还是直接将 t 数组中的数对应放到 s 数组中。
      s[i]=t[i];  
            //但 i+1 不能直接对应,而是将加入的值放入 i+1 中。
      s[i+1]=k;      
    }
    else{
            /*由于多加入了一个数,所以之后的数要将 t 数组的数放到 s 数组的下一位。
            也就是 t[i] 对应  s[i+1] */
      s[i+1]=t[i]; 
    }
  }
  printf("插入后的结果为:");
  for(i=0;i<11;i++){
    printf("%d ",s[i]);  //最后打印新数组s 
  }
  printf("\n");
  return 0;
 } 


完整的代码为:准备

#include<stdio.h>
int main()
{
  int t[10],s[11];      
  int i,j,k;
  printf("请输入十个有序数:");
  for(i=0;i<10;i++){
    scanf("%d",&t[i]);    
  }
  printf("请输入要加入的数:");
  scanf("%d",&k);     
  for(i=0;i<9;i++)
  {
    if((k>=t[i]&&k<=t[i+1])||(k<=t[i]&&k>=t[i+1]))  
    {
      j=i;   
    }
  }
  for(i=0;i<11;i++)
    {
    if(i<j)
        {
      s[i]=t[i];    
    }
    else if(i==j)
        {
      s[i]=t[i];     
      s[i+1]=k;  
    }
    else
        {
      s[i+1]=t[i];  
    }
   }
  printf("插入后的结果为:");
  for(i=0;i<11;i++){
    printf("%d ",s[i]); 
  }
  printf("\n");
  return 0;
 } 


正序结果为:


反序结果为:



相关文章
|
7月前
|
C语言
斐波那契数列(C语言)
斐波那契数列(C语言)
斐波那契数列(C语言)
|
7月前
|
C语言
每天一道C语言编程(3):有规律的数列输出
每天一道C语言编程(3):有规律的数列输出
74 0
|
7月前
|
算法 搜索推荐 程序员
C语言第三十一练——递归求解n位斐波那契数列
C语言第三十一练——递归求解n位斐波那契数列
52 0
|
7月前
|
算法 C语言
C语言汉诺塔数列(循环版,递归版)
C语言汉诺塔数列(循环版,递归版)
89 0
C语言二十三弹---求第N项斐波那契数列的值
C语言二十三弹---求第N项斐波那契数列的值
|
C语言
C语言 输出三角形数列 for循环
C语言 输出三角形数列 for循环
|
算法 C语言
05【C语言 & 趣味算法】经典:兔子产子问题(即:Fibonacci数列)
05【C语言 & 趣味算法】经典:兔子产子问题(即:Fibonacci数列)
05【C语言 & 趣味算法】经典:兔子产子问题(即:Fibonacci数列)
|
C语言
斐波那锲数列与冒泡排序法在C语言中的用法
首先简单介绍一下什么是斐波那契数列
116 0
斐波那锲数列与冒泡排序法在C语言中的用法
|
C语言
蓝桥杯---等差数列(C语言)
找出5个数中两数最小之差(假定公差)
176 0
蓝桥杯---等差数列(C语言)
|
算法 C语言 C++
【C语言蓝桥杯每日一题】——等差数列
这道题,我用到了C语言中的qsort库函数,它是一种基于快排算法思想的排序函数。首先,想让大家认识一下qsort库函数的大概样子,和如何使用。
166 0