猿问

刚学c语言用c语言写有15个数无序存放在一个数组中 先排序 输入一个数要求用折半查找发找出该数是数组

刚学 求大神帮帮忙
慕粉1249561471
浏览 2109回答 1
1回答

Atlas_Wu

  数字的排序直接到网上搜索“C语言冒泡法排序”,网上有图文详解   折半法在数组中查找某一数值,然后返回下标,可以参考我下面的程序。/*核心思想是把输入的数字和数组的中间数做对比,如果x大于数组的中间数,那就改变下标为中间数下标;如果x小于数组的中间数,那就改变上标为中间数下标; 如果x于中间数相等,就返回下标; 如果找不到x,返回-1*/#include<stdio.h>#define M 30int search(int v[],int x);int main()        { int x,i,n;     int v[M]; v[0]=0; for(i=0;i<M;i++)     //这里我按大小顺序给数组赋值,所以我没有排序 {  v[i+1]=v[i]+1; } printf("please enter a x\n"); scanf("%d",&x); n=search(v,x); if(n==-1)printf("can not find\n"); else printf("下标是%d\n",n); return 0;}int search(int v[],int x)        //这个函数是用折半法在数组中找数字x{ int mid;  //中值 int low=0;  //下限 int high=M-1; //上限 while(low<=high) {   mid=(low+high)/2;  if(x>v[mid])   low=mid+1;  else if(x<v[mid])   high=mid-1;  else return mid; } return -1; }
随时随地看视频慕课网APP
我要回答