简单二分法查找
最编程
2024-07-07 10:32:53
...
C
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "string.h"
unsigned int Search(char* list, int len, int num)
{
int min, max, mid_index;
min = 0;
max = len - 1;
mid_index = (min + max) / 2;
printf("min=%d, max=%d, mid_index=%drn",min, max, mid_index);
if (list[min] == num)
{
printf("Find: index=%d, value=%drn", min, list[min]);
return min;
}
else if (list[max] == num)
{
printf("Find: index=%d, value=%drn", max, list[max]);
return max;
}
while (true)
{
if (list[mid_index] == num)
{
printf(">> Find: index=%d, value=%drn", mid_index, list[mid_index]);
return mid_index;
}
else if (list[mid_index] > num)
{
printf(">> 大了 index=%d, value=%drn", mid_index, list[mid_index]);
min = min;
max = mid_index;
mid_index = (min + max) / 2;
}
else
{
printf(">> 小了 index=%d, value=%drn", mid_index, list[mid_index]);
min = mid_index;
max = max;
mid_index = (min + max) / 2;
}
}
}
int main()
{
char list[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int len = sizeof(list) / sizeof(char);
Search(list, len, 8);
return 0;
}
Python
def binarySearch(arr, val):
head = 0
end = len(arr)
mid = (head+end) // 2
if val > arr[end-1] or val < arr[head]:
print("No!")
return
while 1:
print(head, mid, end)
if val == arr[mid]:
print("Find!", arr[mid])
break
elif val < arr[mid]:
head = head
end = mid
mid = (head+end) // 2
elif val > arr[mid]:
head = mid
end = end
mid = (head + end) // 2
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
binarySearch(arr, 10)
上一篇: 二分法的 C++ 实现解析
下一篇: 圣天诺流量控制记录和索引
推荐阅读
-
令人震惊!原来,贡献开放源代码如此简单,几分钟就能上手!
-
简单 JSON 解析和转储的 C++ 实现
-
【论文阅读】分离与联合:用于少量学习的简单元传输-摘要
-
打包用 Node.js 编写的程序的简单说明
-
RabbitMQ】RabbitMQ 7 种工作模式的简单使用示例
-
安装 Prometheus 和 Grafana,通过简单配置和使用 PromQL 查询语言以及基于 Pushgateway 的 Prometheus 数据收集,实现监控数据的可视化。
-
在 ts 中实现类 java hashmap 的简单方法
-
Android 的四个组件内容提供程序,外部应用程序无法访问,原因很简单
-
算法 - 简单查找排序的 Python 实现
-
Gin 框架官方文档 01:创建简单的 Gin 应用程序