大神们,求解一道算法编程,最好只用C语言编写,拜托啦= =
2、算法编程:已知线性表(a0,a1,…,an-1)中元素递增有序且按顺序存储于计算机内。要求用顺序表作为存储结构,设计算法完成:1)在表中查找数值为x的元素;2)若找到...
2、算法编程:已知线性表(a0,a1,…,an-1)中元素递增有序且按顺序存储于计算机内。要求用顺序表作为存储结构,设计算法完成:1)在表中查找数值为x的元素;2)若找到将其与后继元素位置相交换;3)若找不到将其插入表中并使表中元素仍递增有序。
展开
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
int main()
{int n,i,j,m,t,x,a[1000];
scanf("%d",&n);
a[0]=rand()%25;
printf("%d",a[0]);
for(i=1;i<n;i++)
{a[i]=a[i-1]+rand()%10+1;
printf(" %d",a[i]);
}
printf("\nx=");
scanf("%d",&x);
for(i=0,j=n-1;i<j;)
{m=(i+j)/2;
if(a[m]==x){j=m; break;}
else if(a[m]<x)i=m+1;
else j=m;
}
if(a[j]==x)
{t=a[j]; a[j]=a[j+1];a[j+1]=t;}
else
{if(a[j]<x)j++;
for(i=n;i>j;i--)a[i]=a[i-1];
a[j]=x;
n++;
}
for(i=0;i<n;)
printf("%d ",a[i++]);
printf("\n");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询