perseverance52 2021-09-11 15:42 采纳率: 100%
浏览 27
已结题

通过二分查找方法为什么不能找到以十六进制表示的数

通过二分查找方法为什么不能找到以十六进制表示的数


#include <stdio.h>
int a[] = {27, 36, 38, 44, 2, 3, 4, 5, 15, 19, 16, 46, 47, 48, 52};
unsigned int sub1[] = {0x7e, 0x7d, 0x7b, 0x77, 0x6f, 0x5f, 0x3f0xef};

int BinarySearch1(unsigned int a[], int value, int n)
{
  int low, high, mid;
  low = 0;
  high = n - 1;
  while (low <= high)
  {
    mid = (low + high) / 2;
    if (a[mid] == value)
      return mid;
    if (a[mid] > value)
      high = mid - 1;
    if (a[mid] < value)
      low = mid + 1;
    }
  return -1;
}

int main()
{
  int c = 0x6f;
  int num = BinarySearch1(sub1, c, 8);
  printf("num= %d \t", num);
  return 1;
}

如果是是查找0xef又可以找到,不知道为什么有些可以找到有些十六进制表示的数又找不到。

  • 写回答

1条回答 默认 最新

  • baidu_30233079 2021-09-11 16:18
    关注

    二分查找的前提是个有序表,你的sub1根本不是有序表,看你的算法要按升序排列。你把Sub1排序后就能查到了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 已采纳回答 9月11日
  • 修改了问题 9月11日
  • 创建了问题 9月11日

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划