折半/二分查找

小灰灰 2023-03-13 02:57 19阅读 0赞

折半查找算法:

实现如下:

  1. #include <stdio.h>
  2. #define MAXL 100
  3. typedef int KeyType;
  4. typedef char InfoType[10];
  5. typedef struct
  6. {
  7. KeyType key; //KeyType为关键字的数据类型
  8. InfoType data; //其他数据
  9. } NodeType;
  10. typedef NodeType SeqList[MAXL]; //顺序表类型
  11. int BinSearch(SeqList R,int n,KeyType k)
  12. {
  13. int low=0,high=n-1,mid;
  14. while (low<=high)
  15. {
  16. mid=(low+high)/2;
  17. if (R[mid].key==k) //查找成功返回
  18. return mid;
  19. if (R[mid].key>k) //继续在R[low..mid-1]中查找
  20. high=mid-1;
  21. else
  22. low=mid+1; //继续在R[mid+1..high]中查找
  23. }
  24. return -1;
  25. }
  26. void main()
  27. {
  28. int i,n=10;
  29. SeqList R;
  30. KeyType a[]={0,1,2,3,4,5,6,7,8,9},x=9;
  31. for (i=0;i<n;i++)
  32. R[i].key=a[i];
  33. printf("R[%d]=%d\n",BinSearch(R,n,x),x);
  34. }

发表评论

表情:
评论列表 (有 0 条评论,19人围观)

还没有评论,来说两句吧...

相关阅读

    相关 二分查找(折半查找)

    二分查找 了解B+树的时候,看到了二分查找,发现自己只知道名称的意思是折半查找,却不知道是怎么去实现的。 后来查阅网上资料,发现二分查找必须要求数据是有序的,这样就

    相关 java实现二分查找折半查找

    算法思想:要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分