C语言——二分法求有序数组中指定元素的位置

二分法只是用于有序的数组,如果是无序输入,还需要进行排序。此外,mid 中间值不是整数,要取整。

#include <stdio.h>

#include <stdlib.h>

int Bin_search(int* p, int len, int target)

{

int left = 0;

int right = len - 1;

while (left < right)

{

int mid = (left + right) / 2;

if (p[mid] == target)

{

return mid;

}

else if (p[mid] < target)

{

left = mid + 1;

}

else if (p[mid] > target)

{

right = mid - 1;

}

}

return left;

}

int main()

{

int len;

int target;

scanf_s("%d", &len);

scanf_s("%d", &target);

int i;

int* p = (int*)malloc(sizeof(int) * len);

if (p == NULL)

{

return 0;

}

else

{

for (i = 0; i < len; i++)

{

scanf_s("%d", &p[i]);

}

}

int result = Bin_search(p, len, target);

printf("%d", result);

free(p);

return 0;

}

结果

数组长度为4,目标值为5,数组元素为1 3 5 6 ,目标值得位置(索引)为2

相关推荐
一个不知名程序员www16 小时前
算法学习入门 --- 哈希表和unordered_map、unordered_set(C++)
c++·算法
C++ 老炮儿的技术栈16 小时前
在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
c语言·c++·windows·git·vscode·visual studio
Sarvartha16 小时前
C++ STL 栈的便捷使用
c++·算法
夏鹏今天学习了吗17 小时前
【LeetCode热题100(92/100)】多数元素
算法·leetcode·职场和发展
飞Link17 小时前
深度解析 MSER 最大稳定极值区域算法
人工智能·opencv·算法·计算机视觉
bubiyoushang88817 小时前
基于CLEAN算法的杂波抑制Matlab仿真实现
数据结构·算法·matlab
曾经的三心草18 小时前
redis-2-数据结构内部编码-单线程-String命令
数据结构·数据库·redis
2401_8948281218 小时前
从原理到实战:随机森林算法全解析(附 Python 完整代码)
开发语言·python·算法·随机森林
Remember_99318 小时前
【LeetCode精选算法】前缀和专题二
算法·哈希算法·散列表
CQ_YM18 小时前
ARM--SDK、led、beep与链接脚本
c语言·arm开发·嵌入式硬件·嵌入式