#includestdio.h#define MAX 10// array of items on which linear search will be conducted. int list[MAX] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44 };
编程学习网为您整理以下代码实例,主要实现:C语言数据结构插值查找,希望可以帮到各位朋友。
#include<stdio.h>
#define MAX 10
// array of items on which linear search will be conducted.
int List[MAX] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44 };
int find(int data) {
int lo = 0;
int hi = MAX - 1;
int mID = -1;
int comparisons = 1;
int index = -1;
while(lo <= hi) {
printf("
Comparison %d \n" , comparisons ) ;
printf("lo : %d, List[%d] = %d\n", lo, lo, List[lo]);
printf("hi : %d, List[%d] = %d\n", hi, hi, List[hi]);
comparisons++;
// probe the mID point
mID = lo + (((double)(hi - lo) / (List[hi] - List[lo])) * (data - List[lo]));
printf("mID = %d\n",mID);
// data found
if(List[mID] == data) {
index = mID;
break;
} else {
if(List[mID] < data) {
// if data is larger, data is in upper half
lo = mID + 1;
} else {
// if data is smaller, data is in lower half
hi = mID - 1;
}
}
}
printf("
Total comparisons made: %d", --comparisons);
return index;
}
int main() {
//find location of 33
int location = find(33);
// if element was found
if(location != -1)
printf("
Element found at location: %d" ,(location+1));
else
printf("Element not found.");
return 0;
}
沃梦达教程
本文标题为:C语言数据结构插值查找
基础教程推荐
猜你喜欢
- C++输入/输出运算符重载 1970-01-01
- C++定义类对象 1970-01-01
- C++ #define 1970-01-01
- 分别使用%o和%x以八进制或十六进制格式显示整 1970-01-01
- 明确指定任何或所有枚举数的整数值 1970-01-01
- C语言访问数组元素 1970-01-01
- end() 能否成为 stl 容器的昂贵操作 2022-10-23
- C++按值调用 1970-01-01
- 初始化变量和赋值运算符 1970-01-01
- 使用scanf()读取字符串 1970-01-01