用C语言编写一个折半查找,12,50,54,70,30,11,4,56,22,35

就叫随便吧 2018-03-15 04:26:42
求大神帮忙看一下,编写一段代码
...全文
460 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-03-16
  • 打赏
  • 举报
回复
百度搜相关关键字。
AlbertS 2018-03-16
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>

int find_number(const int* pArray, const int nCount, const int nFindNumber)
{
	if (pArray == NULL)
		return -1;

	for (int nStartIndex = 0, nEndIndex = nCount - 1; nStartIndex <= nEndIndex;)
	{
		int nPos = (nStartIndex + nEndIndex) / 2;
		if (pArray[nPos] == nFindNumber)
			return nPos;
		else if (pArray[nPos] < nFindNumber)
			nStartIndex = nPos + 1;
		else
			nEndIndex = nPos - 1;
	}
	
	return -1;
}


#define MAX_ARRAY_COUNT 10
int main(int argc, char* argv[])
{
	int arrayNumber[MAX_ARRAY_COUNT] = {4, 11, 12, 22, 30, 35, 50, 54, 56, 70};

	printf("开始查找数字22:\n");
	int pos = find_number(arrayNumber, MAX_ARRAY_COUNT, 22);
	if (pos >= 0)
	{
		printf("数字22在位置%d\n", pos + 1);
	}
	else
	{
		printf("数字22未找到\n");
	}

	printf("开始查找数字77:\n");
	pos = find_number(arrayNumber, MAX_ARRAY_COUNT, 77);
	if (pos >= 0)
	{
		printf("数字77在位置%d\n", pos + 1);
	}
	else
	{
		printf("数字77未找到\n");
	}

	return 0;
}
不知道这个算不算

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧