问题引入:
将一个整数m插入到升序数组a中去,使得插入后的数组a任然有序。
1 2 3 4 7 8 9
1 2 3 4 5 7 8 9
#include<stdio.h>
int main()
{
printf("请输入数组元素个数n\n");
int n;//数组元素个数
scanf("%d",&n);
int a[n];
int data;//保存当前输入的数据
int k = 0;//当前输入的是第几个数据
int m;
int i,j;
for(m=0;m<n;m++)
{
printf("请输入第%d个数据\n",k);
scanf("%d",&data);
if(k==0)//当前是第一个数据
{
a[0] = data;
}
else//不是第一个
{
for(i=0;i<k;i++)//现在只输入了k个元素
{
if(data < a[i])//比较m和a[i]的大小
{
break;//打到打不过为止
}
}
//打不过a[i]
//第二步,把后面的数据依次往后挪动一个位置,再把输入的这个数插入+
//if(m>a[n-2])//m是最大的
if(i == k)//m是最大的
{
a[k] = data;
}
else//data不是最大的
{
for(j=k-1;j>=i;j--)
{
a[j+1] = a[j];
}
a[i] = data;
}
}
k++;
for(i=0;i<k;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
关注博主不迷路,博主带你上高速!