利用随机函数产生30000个随机整数,进行顺序查找、折半查找,并进行比较。提示:用顺序存储结构。
// 查找 #include<stdio.h> #include<time.h> #include<stdlib.h> #define numcnt 80000 int num[numcnt]; // 顺序查找 int find_1(int x){ int i; for( i = 0; i < numcnt; i++){ if(x == num[i]){ return i; } } return -1; // 没有找到 } // 折半查找: int find_2(int x){ int low = 0; int high = numcnt - 1; int mid; while(low <= high){ mid = (low+high)/2; //取中值 if(num[mid] == x) break; //找到,结束循环 else if(num[mid] < x) low = mid+1; //如果目标值比当前中间值大,说明目标值在中间值的后面low移动到mid+1 else high = mid - 1; } if(low <= high) //找到 return mid; else //未找到 return -1; } int main(){ int r2, r1; int x; clock_t start; int i; srand(time(0)); //设置时间种子 for(i=0; i < numcnt; i++){ num[i] = i; } x = rand() % numcnt; // 随机一个需要查找的数 // 顺序查找 start = clock(); r1 = find_1(num[x]); printf("查询结果:%d\n", r1); printf( "顺序查找-用时: %f ms\n", (double)(clock() - start) ); // 折半查找: start = clock(); r2 = find_2(num[x]); printf("查询结果:%d\n", r2); printf( "折半查找-用时: %f ms\n", (double)(clock() - start) ); return 0; }