圣司


私信TA

用户名:uq_73405754848

访问量:1620

签 名:

立志成为高级工具人

等  级
排  名 9645
经  验 1085
参赛次数 0
文章发表 18
年  龄 18
在职情况 学生
学  校 南京邮电大学
专  业

  自我简介:

TA的其他文章

字符串反转
浏览:68

解题思路:

  1. 输入数组

  2. 进行sort(关键),这个用函数写。

    1. 用i遍历数组,找到number>=a[i]&&number<=a[i+1]的i,这里的i后面得加1.

    2. 将i+1后面的数组元素,全部往后移位。(关键)源头是在数组建立的时候多建立一个单位。让现在的最后一个的元素往后赋值,循环,前一个赋值后一个,直到i本身

    3. 最后将a[i]用number赋值。

  3. 输出数组。


  4. 注意事项:

    1. i得加1 

    2. 移位 是最后一个元素往后赋值,递减循环到i

      参考代码:

    3. #include<stdio.h>
      void Sort(int a[],int n1,int n);
      int main()
      {
      	int array[10];
      	int i;
      	for(i=0;i<9;i++)
      	{
      		scanf("%d",&array[i]);	
      	}
      	int number;
      	scanf("%d",&number);
      	Sort(array,9,number);
      	for(i=0;i<10;i++)
      	{
      		printf("%d\n",array[i]);
      	} 
      	return 0;
      }
      void Sort(int a[],int n1,int n)
      {
      	int i,j;
      	for(i=0;i<n1;i++)
      	{
      		if(n>=a[i]&&n<=a[i+1])
      		{
      			i++;
      			break;
      		}
      	}
      	for(j=n1-1;j>=i;j--)
      	{
      		a[j+1]=a[j];	
      	}
      	a[i]=n;
      	
      }
      但是找到i位置的循环不够简洁,下面是简洁版本。


    4. #include<stdio.h>
      void Sort(int a[],int n1,int n);
      int main()
      {
      	int array[10];
      	int i;
      	for(i=0;i<9;i++)
      	{
      		scanf("%d",&array[i]);	
      	}
      	int number;
      	scanf("%d",&number);
      	Sort(array,9,number);
      	for(i=0;i<10;i++)
      	{
      		printf("%d\n",array[i]);
      	} 
      	return 0;
      }
      void Sort(int a[],int n1,int n)
      {
      	int i,j;
      	for(i=0;i<n1&&n>=a[i];i++);
      	for(j=n1-1;j>=i;j--)
      	{
      		a[j+1]=a[j];	
      	}
      	a[i]=n;
      	
      }
      更新之后,稍微加快了速度

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区