拉格朗日插值查找
/* 拉格朗日插值查找 */ #include<stdio.h> #include<stdlib.h> #define N 1024 void search(int a[N],int num) { int tou = 0; int wei = N-1; int zhong; int flag = -1;// 代表找不到 int ci = 0;// 统计次数 while (tou <= wei) { printf("\n%d, %d, %d",tou,wei,++ci); //zhong = (tou+wei)/2;// 取中间值 zhong = tou + (wei-tou)*1.0*(num-a[tou]/a[wei]-a[tou]);// 拉格朗日 if (num == a[zhong]) { printf("找到,a[%d] = %d",zhong,num); flag = 1; break; } else if (num > a[zhong]) { tou = zhong + 1; } else { wei = zhong - 1; } } if (flag == -1) { printf("没有找到"); } } void main() { int a[1024]; for(int i=0;i<N;i++) { a[i] = i; printf("%d ",a[i]); } int num; scanf("%d",&num); search(a,num);// 调用函数查找 system("pause"); }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-24 09:18 Dragon-wuxl 阅读(167) 评论(0) 收藏 举报
浙公网安备 33010602011771号