#include<stdio.h>
void input(int a[10]);
void sort(int a[10]);
void search(int a[11],int n);
int main()
{ int a[11];
int i,n;
input(a);
printf("\n");
sort(a);
for(i=0;i<10;i++)
{printf("%d\t",a[i]);
}
printf("\n");
printf("请输入一个整数:");
scanf("%d",&n);
search(a,n);
return 0;
}
void input(int a[10])
{ int i;
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void sort(int a[10])
{ int i,j,temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
{ if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
void search(int a[11],int n)
{ int x1,x2,x,temp;
if(n>a[0])
{ for(int i=10;i>0;i--)
{a[i]=a[i-1];
}
a[0]=n;
printf("%d比该数组中所有的数都大",n);
printf("\n");
for(int i=0;i<11;i++)
{printf("%d\t",a[i]);
}
}
else if(n<a[9])
{ a[10]=n;
printf("%d比该数组中所有的数都小",n);
printf("\n");
for(int i=0;i<11;i++)
{printf("%d\t",a[i]);
}
}
else
{ x1=0;
x2=9;
do{x=(x1+x2)/2;
if(n>a[x])
{x2=x-1;
}
else if(n<a[x])
{x1=x+1;
}
}while(x1<=x2&&n!=a[x]);
if(n==a[x])
printf("%d是该数组中的第%d个数",n,x+1);
else
{ for(int i=10;i>x2+1;i--)
{a[i]=a[i-1];
}
a[x2+1]=n;
for(int i=0;i<11;i++)
{printf("%d\t",a[i]);
}
}
}
}
编写一个程序,包括主函数和如下子函数。 输入10个无序的整数;用起泡方法从大到小排序;要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入到合适位置。
最新推荐文章于 2024-05-22 19:28:52 发布