#include stdio.h
彭泽网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联建站于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
int binfind(int val[] , int num , int value)
{
int start = 0;
int end = num - 1;
int mid = (start + end)/2;
while(val[mid] != value start end)
{
if (val[mid] value)
{
end = mid - 1;
}
else if (val[mid] value)
{
start = mid + 1;
}
mid = ( start + end )/2;
}
if (val[mid] == value)
return mid;
else
return -1;
}
int main()
{
int nums[] = {1 , 3 , 4 ,7 ,8 , 12 ,45 ,67 ,97 ,123 ,456 ,675 ,1111 , 4534 , 4563};
int result = binfind(nums , sizeof(nums) / sizeof(nums[0]) , 45);
if (result 0)
{
printf("查无此数");
}
}
if(key==a[mid]) return mid; 这句就是罪魁祸首。呵呵你是想用return来结束while循环吧。用错了。
找到结果后,你应该是把结果输出出来,而不是用return。return语句是返回整个函数的,在你的程序里main函数就结束了,你当然看不到任何结果了。
改为:
if(key==a[mid]) break; *这行是结束while循环的。而不是你所用的return*/
}
#includestdio.h
int main()
{
int i,j,k,n,m;
int a[105];
scanf("%d",n);
for(i=0;in;i++)
scanf("%d",a[i]);
scanf("%d",m);
int left=0;right=n-1;
while(right=left)
{
mid=(left+right)/2;
if(a[mid]==m)
{
printf("%d\n",mid);
break;
}
else if(a[mid]m)
right=mid-1;
else
left=mid+1;
}
if(leftright)
printf("null\n");
return 0;
}
排序(冒泡)
void(student*tmp,int size)
{
for(int j=0;jn-1;j++)
{
for(k=0;kn-1-j;k++)
{
if(strcmp(tmp[k].name,tmp[k+1].name)0)
{
student tm=tmp[k];
tmp[k]=tmp[k+1];
tmp[k]=tm;
}
}
}
}
int findOn(student*test,char*name,int begin,int end)
{
if(beginend)
{
return -1;//没找到
}
int mid=end+((end-begin)/2);
if(strcmp(test[mid].name,name)==0)
{
return mid;
}elseif((strcmp(test[mid].name,name)0)
{
return findOn(test,name,mid+1,end);
}else
{
return findOn(test,name,begin,mid-1);
}
}
int find(student *test,int size,char* studentname)
{
return findOn(test,strudentname,0,size-1);
}
find(student,3000,"testname");
再来一个快速排序
void quickSort(student *test arr,int startPos, int endPos)
{
int i,j;
student key;
key=arr[startPos];
i=startPos;
j=endPos;
while(ij)
{
while(strcmp(arr[j].name,key.name)=0 ij)--j; //第一个比他小
{
student tmp=arr[i];
arr[i]=arr[j]; //moveed
arr[j]=tmp;
i++;
}
while((strcmp(arr[i].name,key.name)=0 ij)++i; //第一个比他大,
{
student tmp=arr[j];
arr[j]=arr[i];
arr[i]=tmp;
j--;
}
}
arr[i]=key; //赋值
if(i-1startPos) quickSort(arr,startPos,i-1);
if(endPosi+1) quickSort(arr,i+1,endPos);
}
quicksort(test,0,3000-1);
find(student,3000,"testname");