c语言插入数组元素(数组)

问题描述

对于一个n(n<100)个元素的数组从小到大排序。

输入

第一个数n为数组元素有个数。
第二行为n个整型数。

输出

每个数据后有空格

输入样列

5
3 6 2 9 1

输出样例

1 2 3 6 9

C语言中,数组是一组连续的相同类型的数据集合。 所以要在数组中插入元素,需要按照以下步骤:

1、找到插入点;

2、将插入点所在元素,及之后的所有元素,都向后移动一个单位;

3、将插入点赋值为要插入的元素。 

以固定位置插入,代码举例如下:

#include <stdio.h>
void insert(int *a, int n, int i, int v)
//将长度为n的数组a, ä¸‹æ ‡ä¸ºi的位置插入值为v的元素。 æ’入后,数组长度为n+1.
{
    int j;
    for(j = n-1; j>=i; j --)//将i及以后的后移一位。 ç”±äºŽæ˜¯å›ºå®šä½ç½®æ’入,所以不需要查找插入位置。 
        a[j+1] = a[j];
    a[i] = v;//插入元素。 
}

int main()
{
    int a[5] = {1,3,6,7};/五个元素数组,初始化四个值。
    int i;
    
    insert(a, 4, 2, 5);//将5插入到a[2]位置。 
    for(i = 0; i < 5; i ++)
        printf("%d ", a[i]);//输出结果,为1 3 5 6 7 
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-15
#include <stdio.h>
#include <stdlib.h>

void main()
{
int *p = NULL;
int i,t,j,n;
printf("请输入数组元素个数:\n");
scanf("%d", &n);
p = new int[n];
printf("请输入数组元素,以回车隔开。\n");
for(i=0;i<n;i++)
{
scanf("%d", p+i);
}

for(i=0;i<n;i++)
{
t=p[i];
j=i-1;
while(j>=0&&t<p[j])
{
p[j+1]=p[j];
j--;
}
p[j+1]=t;
}
for(i=0;i<n;i++) printf("%d ",p[i]);
}本回答被网友采纳
第2个回答  2016-05-27
#include <stdio.h>

int main()
{
int i;
int a[10] = {0, 4, 10, 100, 200, 321};
int n;

printf("输入需要插入的值: \n");
scanf("%d", &n);

printf("插入前: ");
for (i = 0; i < 10; i++){
printf("%d\t", a[i]);
if (a[i] > a[i + 1])
{
printf("\n");
break;
}
}

for (; i > 0; i--){
if (a[i] > n)
a[i + 1] = a[i];
else{
a[i + 1] = n;
break;
}
}

printf("插入后: ");
for (i = 0; i < 10; i++){
printf("%d\t", a[i]);
if (a[i] > a[i + 1])
{
printf("\n");
break;
}
}

return 0;
}
第3个回答  2012-03-01
#include <algorithm.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n;
int a[101];
int i;
scanf("%d",&n);
for(i = 0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
system("pause");
}
第4个回答  2012-03-01
for(i=0;i<n;i++)
{
t=p[i];
j=i-1;
while(j>=0&&t<p[j])
{
p[j+1]=p[j];
j--;
}
p[j+1]=t;
}
for