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

相关推荐
Wo3Shi4七8 分钟前
数组
数据结构·算法·go
myloveasuka10 分钟前
信号操作集函数
linux·运维·服务器·c语言·c++·vscode
CoovallyAIHub15 分钟前
YOLOv13都来了,目标检测还卷得动吗?别急,还有这些新方向!
深度学习·算法·计算机视觉
北方有星辰zz21 分钟前
数据结构:栈
java·开发语言·数据结构
zl_dfq26 分钟前
数据结构之 【树的简介】(树的(相关)概念、二叉树的概念、部分性质、满二叉树、完全二叉树)
数据结构
转转技术团队1 小时前
边学边做:图片识别技术的学习与应用
后端·算法
一块plus1 小时前
2025 年值得一玩的最佳 Web3 游戏
算法·设计模式·程序员
前端拿破轮1 小时前
不是吧不是吧,leetcode第一题我就做不出来?😭😭😭
后端·算法·leetcode
一块plus1 小时前
什么是去中心化 AI?区块链驱动智能的初学者指南
人工智能·后端·算法
Mr_Xuhhh1 小时前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法