使用 二分法 折半查找,每次查找少一半数据,效率高
#include <stdio.h>
int subscript(char arr[], int x, int y)
{
int left = 0;
int right = x - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (arr[mid] < y)
{
left = mid + 1;
}
else if (arr[mid] > y)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
//输入:数组,数组长度,6
//返回:6的下标, 无则-1
int main()
{
int k = 6;
char arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr1) / sizeof(arr1[0]);
printf("数组元素个数%d\n", sz);
int res = subscript(arr1, sz, k);
printf("6的下标:%d\n", res);
return 0;
}