长沙网络营销网站建设,展馆设计网站推荐,企业网站建设网站模板,婚纱摄影网站源码下载一、查找算法 1、二分查找:(前提条件: 必须有序的序列)
#include stdio.h
//二分查找 value代表的是被查找的值
int findByHalf(int *p, int n, int value)
{int low = 0;//low低int high = n-1;//high高int middle;//用来保存中间位置的下标while(low = high…一、查找算法 1、二分查找:(前提条件: 必须有序的序列)
#include stdio.h
//二分查找 value代表的是被查找的值
int findByHalf(int *p, int n, int value)
{int low = 0;//low低int high = n-1;//high高int middle;//用来保存中间位置的下标while(low = high)//注意此处循环结束的条件,需要加上 ={//不断获取中间位置的下标middle = (low + high) / 2;if(value p[middle])//说明在前半段,移动high{high = middle-1;}else if(value p[middle])//说明在后半段,移动low{low = middle + 1;}else//对应p[middle] == value 情况{return middle;}}return -1;//代表没有找到
}int main(int argc, const char *argv[])
{int a[] = {12,34,56,77,89,342,567,7898};int i;for(i = 0; i sizeof(a)/sizeof(a[0]); i++)//把数组中的每个元素都找一遍,进行测试程序{printf("%d post is %d\n",a[i],findByHalf(a,sizeof(a)/sizeof(a[0]),a[i]));}//查找10000返回 -1printf("%d post is %d\n",10000,findByHalf(a,sizeof(a)/sizeof(a[0]),10000));return 0;
}2、分块查找:(块间有序,块内无序) 索引表 + 源数据表 思路: (1)先在索引表中确定在哪一块中 (2)再遍历这一块进行查找 //索引表 typedef struct { int max; //块中最大值 int post;//块的起始位置下标,post数组下标 }index_t; //索引 //源数据表 int a[19] = {18, 10, 9, 8, 16, 20, 38, 42, 19, 50, 84, 72, 56, 55, 76, 100, 90, 88, 108}; 0 5 10 15 //索引表 index_t b[4] = {{18,0},{50,5},{84,10},{108,15}};