#define _CRT_SECURE_NO_WARNINGS 1//这个代码仅针对已经排好序的数组(从小到大)
#include<stdio.h>
int search(int a[], int target, int sz)
{
int left = 0, right = sz - 1;//left表示数组左边界,right表示数组右边界
while (left<=right)
{
int mid = left+ (right - left) / 2;//mid表示数组中间值
if (a[mid]<target)//如果居中元素小于要查找的元素说明要查找的元素在居中元素的右边
{
left = mid +1 ;//左边界等于居中值+1
}
else if (a[mid]>target)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;//如果找不到元素就返回-1
}
int main()
{
int target, index;//target表示他需要查找的元素,index表示查找元素的下标
int a[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(a) / sizeof(a[0]);//求出数组中元素个数
printf("%d\n", sz);
printf("请输入需要查找的元素:\n");
scanf("%d", &target);
index = search(a, target, sz);
if (index == -1)
{
printf("找不到");
}
else
{
printf("\n下标是:%d", index);
}
return 0;
}
初学c语言,代码写的不够完善,权当记录过程。