精华内容
下载资源
问答
  • 编写函数fun,在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 函数接口定义: void fun(int a[N],int number); 其中 a 和 number 都是用户传入的参数。函数在一个已按升序排列的数组 a 中...

    在一个升序排列的数组中插入一个数 (10分)
    编写函数fun,在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

    函数接口定义:

    void fun(int a[N],int number);
    

    其中 a 和 number 都是用户传入的参数。函数在一个已按升序排列的数组 a 中插入一个数 number ,插入后,数组元素仍按升序排列
    裁判测试程序样例:

    #include <stdio.h>
    #define N 11
    void fun(int a[N], int number);
    int main()
    {
        int i, number, a[N] = {1, 2, 4, 6, 8, 9, 12, 15, 149, 156};
        scanf("%d", &number);
    
        printf("The original array:\n");
    
        for (i = 0; i < N - 1; i++)
            printf("%5d", a[i]);
    
        printf("\n");
    
        fun(a, number);
    
        printf("The result array:\n");
    
        for (i = 0; i < N; i++)
            printf("%5d", a[i]);
    
        printf("\n");
        
        return 0;
    }
    

    输入样例:

    6
    

    输出样例:

    The original array:
        1    2    4    6    8    9   12   15  149  156
    The result array:
        1    2    4    6    6    8    9   12   15  149  156
    

    个人答案如下:

    void fun(int a[N], int number)
    {
        int m;
    
        for (int i = 0; i < N; i++)
        {
            if (a[i] >= number)
            {
                m = i;
                for (int q = (N-1); q > i; q--)
                {
                    a[q] = a[q - 1];
                }
                break;
            }
        }
    
        a[m] = number;
    }
    

    原理:
    如果输入的数number大于arr[i];
    那么从数组arr最后一位arr[N]开始,将arr[N]的值赋给arr[N+1],同时N- -,直到N>i;
    最后将number赋值给arr[i];

    展开全文
  • 这里定义一个整型数组数组名为a,此数组可包含8个整型元素,原有7个元素按升序排列,来为大家进行演示。 代码编写前,必须进行逻辑分析。这里需考虑三种情况: 输入值小于或等于a[0] 输入值位于数组中间...

    这里定义一个整型数组,数组名为a,此数组可包含8个整型元素,原有7个元素按升序排列,来为大家进行演示。

    在代码编写前,必须进行逻辑分析。这里需考虑三种情况:

    1. 输入的值小于或等于a[0]
    2. 输入的值位于数组中间(也可以与数组中间的值相等)
    3. 输入的值大于或等于a[6]

    考虑完这些情况,就可以进行代码编写了。

    #include<stdio.h>
    int main()
    {  
    	int a[8]={3,4,8,12,23,25,29},i,j,t;
    	printf("请输入一个数: "); 
        scanf("%d",&t);
        if(t>=a[6])  //这是输入的值为数组最大值的情况 (包含a[7]等于a[6]的情况) 
    		a[7]=t;
    	else
    	{
    		for(i=1;i<8;i++)
        	{
        		if(t<=a[0])  //这是输入的值为数组最小值的情况(包括a[0]等于a[1]的情况) 
        		{
        			for(j=7;j>i-1;j--)
    					a[j]=a[j-1];
    				a[i-1]=t;
    				break;
    			}
    			if((t>a[i-1]&&t<a[i])||t==a[i])  //这是输入的值位于数组中间的情况(包括在数组中间有两个大小一样的值的情况) 
        		{
    				for(j=7;j>i-1;j--)
    					a[j]=a[j-1];
    				a[i]=t;
    				break;
    			}   
    		}
    	} 
    	for(i=0;i<8;i++)
    		printf("%d  ",a[i]);
    	return 0;
    }
    
    展开全文
  • 解题思路:假设数组a有n个元素,而且已按升序排列插入一个数时按以下方法处理: 如果插入数num比a数组最后一个数大,则将插入数放在a数组末尾。 如果插入数num不比a数组最后一个数大,则将它依次和a[0]a[n...

    例62:有一个已经排好序的数组,要求C语言实现输入一个数后,按原来排序的规律将它插入数组中。

    解题思路:假设数组a有n个元素,而且已按升序排列,在插入一个数时按以下方法处理:

    如果插入的数num比a数组最后一个数大,则将插入的数放在a数组末尾。

    如果插入的数num不比a数组最后一个数大,则将它依次和a[0]a[n-1]比较,直到出现a[i]>num为止,这时表示a[0]a[i-1]各元素的值比num小,a[i]~a[n-1]各元素的值比num大。

    源代码演示:

    #include<stdio.h>//头文件 
    int main()//主函数 
    {
      int a[11]={1,4,6,9,13,16,19,28,40,100};//定义整型数组且赋初值 
      int t1,t2,num,end,i,j;//定义整型变量 
      printf("原来的输出:\n");//提示语句 
      for(i=0;i<10;i++)//遍历输出10个数 
      {
        printf("%d ",a[i]);
      }
      printf("\n");//换行
      printf("输入要插入的数:\n");//提示语句 
      scanf("%d",&num);//键盘录入要插入的数
      end=a[9];//将最后一个数赋值给end 
      if(num>end)//先和最后一个数比大小 
      {
        a[10]=num;
      } 
      else
      {
        //小于的话,依次比较,直到比插入的数大 
        for(i=0;i<10;i++)
        {
          if(a[i]>num)
          {
            t1=a[i];
            a[i]=num;
            for(j=i+1;j<11;j++)
            {
              t2=a[j];
              a[j]=t1;
              t1=t2;
            }
            //把要插入的数放到数组中 
            break;
          }
        }
      }
      printf("插入之后排序:\n");//提示语句 
      for(i=0;i<11;i++)//遍历输出 
      {
        printf("%d ",a[i]);
      }
      printf("\n");//换行 
      return 0;//主函数返回值为0 
    }
    

    编译运行结果如下:

    原来的输出:
    1 4 6 9 13 16 19 28 40 100
    输入要插入的数:
    8
    插入之后排序:
    1 4 6 8 9 13 16 19 28 40 100
    
    --------------------------------
    Process exited after 6.449 seconds with return value 0
    请按任意键继续. . .
    

    C语言将一个数按大小顺序插入数组中
    更多案例可以go公众号:C语言入门到精通

    展开全文
  • 在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 输入格式: 直接输入一个整数,没有其它任何附加字符。。 输出格式: 输出插入元素后的...

    在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。
    输入格式:
    直接输入一个整数,没有其它任何附加字符。。
    输出格式:
    输出插入元素后的升序数列,每个数输出占5列。
    输入样例:
    5
    输出样例:
    1 2 4 5 6 8 9 12 15 149 156

    程序

    #include<stdio.h>
    int main(void){
    	int i,j,x,count;
    	int a[11]={1,2,4,6,8,9,12,15,149,156};
    	scanf("%d",&x);
    for(i=0;i<10;i++)   
        if(x<a[i])   
        break;    
       for(j=10;j>i;j--)    
          a[j]=a[j-1];  
            a[j]=x;      
           for(i=0;i<11;i++) 
          printf("%5d",a[i]);  
          printf("\n");    
       return 0;
    }
    
    

    结果
    在这里插入图片描述

    展开全文
  • 在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 输入格式: 直接输入一个整数,没有其它任何附加字符。。 输出格式: 输出插入元素后的...
  • 在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 输入格式: 直接输入一个整数,没有其它任何附加字符。。 输出格式: 输出插入元素后的...
  • 在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 输入格式 直接输入一个整数,没有其它任何附加字符。。 输出格式 输出插入元素后的...
  • 在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 输入格式: 直接输入一个整数,没有其它任何附加字符。。 输出格式: 输出插入元素...
  • 在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 输入格式: 直接输入一个整数,没有其它任何附加字符。。 输出格式: 输出插入元素后的...
  • 1.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列 #include<stdio.h> #define N 10 void fun(int *a) { int number,i; printf("Please enter a integer to insert in the array:");...
  • 设有一数列,包含10个数,已按升序排好。 现要求编一程序,它能够把从指定位置开始n个数 按逆序重新排列并输出新完整数列。 int R_order(int a[10],int n)//定义一个求逆序函数 { int t; for (int i = 0; i &...
  • 题目:设有2长度不等有序表,各表中元素按升序排列,要求通过两两合并方法把2表合并成一升序表,要求最坏情况下比较次数较少,请给出具体策略。例如: 表1:1,3,16 表2:2,5,9,11,17,47 解题...
  • /*设有数列,包含10数,已按升序排好, 现要求编程序它能够把从指定位置k开始n数 按逆序重新排列并输出新完整数列。试编程。 (例如;原数列为2,4,6,8,10,12,14,16,18 ,20,若要求把从第4(k=4)...
  • 数组的查找 如果一个数组排好序了,... 假设数组已按升序排列。 二分査找法首先将关键字与数组的中间 元素进行比较。 考虑下面三种情况: • 如果关键字小于中€元素, 只需要在数组的前一半元素中继续査找关键字。 ...
  • JS中数组重排序方法

    2020-11-28 03:04:18
    默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组toString()转型方法,然后比较得到字符串,确定如何排序。即使数组项都是数值,sort()方法比较也是字符串: var values =...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5该...
  • 编写函数void fun(int a[],int m,int b[],int n,int c[])将已按升序排好的数组a(共有m数)和已按降序排好数组b(共有n数)合并数组c中,并使c按降序排列,然后用主函数调用。(注:不允许合并后再排序) 函数...
  • C语言第六章习题

    千次阅读 2018-11-22 17:28:34
    2.编写一个程序,将输入的数据插入到一个已按升序排列的数组中,要求插入后的数组仍然按升列排序。 3.编写一个程序,计算5*5的矩阵的主对角线之和。 4 编写一个程序将两个字符串连接起来。不能使用strcat函数。 5...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5该...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5该...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5该...
  • Sort()函数多种用法

    2021-01-21 11:28:32
    默认情况下, sort() 方法按升序排列数组项。为了实现排序, sort() 方法会调用每个数组 toString() 转型方法,然后比较得到字符串,确定如何排序。如下: var values = [orange,apple,banana]; values....
  • 折半查找法

    2016-03-08 10:45:15
    1. 问题:假设现在有一个有序的数组array(已按升序排列好的),又有一个数num,现在查找这个数num是否数组array中。 问题分析:假设num数组array中,那么怎么进行折半查找呢? 1)先将num和数组中间的那个数...
  • 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。 示例1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], target = 5 输出: 8(元素5...
  • 选择排序 Selection Sort

    2019-03-27 19:14:43
    假设要将待排序的数组按升序排列排序的部分左边,大小每次加一,待排序的部分找到最小的元素和该部分最左边的元素交换位置,然后待排序的部分大小减一,直到为一停止,因为一个元素是有序的。 ...
  • 、默认情况默认情况下,sort()方法按升序排列数组项。为了实现排序,sort()方法会调用每个数组toString()转型方法,然后比较得到字符串,确定如何排序。如下:1 var values = ["orange","apple",...
  • 1 首先对给定n个权值作升序排列 2 设置n-1次操作k1n-1循环第k次操作中由两个最小权值叶结点生成一个新结点 x=w[2*k-1]; y=w[2*k]; w[n+k]=x+y; lc[n+k]=x; rc[n+k]=y; 3 新结点参与排序为下一次操作做准备 ...
  • sort()多种用法

    2016-03-20 11:40:00
    默认情况下,sort()方法按升序排列数组项。为了实现排序,sort()方法会调用每个数组toString()转型方法,然后比较得到字符串,确定如何排序。如下: 1 var values = ["orange","apple","banana"]; 2 ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

在一个已按升序排列的数组