------------只要够努力,人生最坏的结局不过是大器晚成!!!

利用随机函数产生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;
} 

  

posted on 2020-05-21 16:48  ystraw  阅读(264)  评论(0编辑  收藏  举报

不经一番切孤寒,怎得梅花扑鼻香