15,440
社区成员
发帖
与我相关
我的任务
分享
#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;
}
不知道这个算不算