数据结构——二分法查找

来源:互联网 发布:移动设备数据恢复 编辑:程序博客网 时间:2024/05/20 18:22

用二分法查找首先要将产生的一组随机数排序,然后调用二分查找函数。找到则输出这个数,找不到则输出错误信息。

#include <stdio.h>#include <stdlib.h>#define N   100#define ERROR   -1void random_array(int a[],int n){    int i=0;    for(i=0;i<n;i++)        a[i]=random()%n;}void print_array(int a[],int n){    int i=0;    for(i=0;i<n;i++)        printf("%d\n",a[i]);}int mycompare(const void* p1,const void* p2){    return *(int*)p1-*(int*)p2;}int bin_search(int a[],int k){    int left=0;    int right=N;    int middle=0;    while(left<=right)    {        middle=(left+right)/2;        if(k<a[middle])            right=middle-1;        else if(k>a[middle])            left=middle+1;        else            return a[middle];    }    return -1;}int main(){    int i=0,index=0;    int a[N];    random_array(a,N);    qsort((void*)a,N,sizeof(int),mycompare);    for(i=0;i<N;i++)        printf("%d\n", a[i]);    printf("\n");    for(i=0;i<N;i++)    {        index=bin_search(a,random()%N);        if(index != ERROR)            printf("%d\n", index);        else            printf("ERROR:NOT FOUND\n");    }    return 0;}
0 0