简单的排序问题,怎么还是有错误。
老师布置一个用二分查找再排序的问题,我写了一个二分查找的时候没问题,再排序就出错误了。
#include<stdio.h>
int main()
{
int a[20]={1,2,3,4,5,6,7,8,9,12};
int find=0,bot=0,top=9,x,mid,k,i,j,temp;
printf("请输入一个数:\n");
scanf("%d",&x);
do
{
mid=(bot+top)/2;
if(a[mid]!=x)
{
if(a[mid]<x) bot=mid+1;
else top=mid-1;
}
else
{
find=1;
printf("该数为第%d个数\n",mid+1);
}
}while(bot<=top&&find==0);
if(find==0)
{
printf("排序后:\n");
a[10]=x;
for(i=0;i<11;i++)
{
k=i;
for(j=i+1;j<12;j++)
if(a[k]>a[i]) k=i;
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
printf("%3d",a[i]);
}
printf("\n");
}
return 0;
}
怎么让它输入0的时候也正确呢?