Skip to content

Commit af3beee

Browse files
authoredAug 17, 2021
Update 插值查找.c
1 parent 2a1dd95 commit af3beee

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed
 

‎插值查找/插值查找.c

+35-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,35 @@
1-
#
1+
#define _CRT_SECURE_NO_WARNINGS
2+
#include <stdio.h>
3+
//插值查找法 arr数组,length 数组长度,key 查找的关键字
4+
//返回查找值的下标 ,没查找到 返回-1
5+
int Interpolation_Search(int *arr, int length, int key)
6+
{
7+
int low = 0;//低位下标
8+
int high = length-1;//高位下标
9+
int mid;//中间值下标
10+
while (low <= high)
11+
{
12+
mid = (high-low)*(key - arr[low]) / (arr[high] - arr[low]);//插值
13+
if (key < arr[mid])
14+
{
15+
high = mid - 1;
16+
}
17+
else if(key > arr[mid])
18+
{
19+
low = mid + 1;
20+
}
21+
else
22+
{
23+
return mid;
24+
}
25+
}
26+
return -1;
27+
}
28+
int main(int argc, char *argv[])
29+
{
30+
int arr[10] = { 0,1,2,3,4,5,6,7,8,9};
31+
int index1 = Interpolation_Search(arr, 10, 5);
32+
int index2 = Interpolation_Search(arr, 10, 100);
33+
printf("index1 = %d,index2 = %d\n",index1,index2);
34+
return 0;
35+
}

0 commit comments

Comments
 (0)