当前位置:编程学习 > C/C++ >>

查找之折半查找

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
 
C语言实现如下:
[cpp]  
#include <stdio.h>  
  
void display(int array[],int size){  
        printf("the array is:");  
        int i;  
        for(i=0;i<size;i++){  
                printf("%d ",array[i]);  
        }  
        printf("\n");  
}  
  
void middle(int array[],int size,int num){  
        int first=0,last=size-1,middle=0;  
        while(first <= last){  
                middle = (first+last)/2;  
                if(array[middle] > num){  
                        last = middle-1;  
                }else if(array[middle] < num){  
                        first = middle+1;  
                }else{  
                        printf("this num index is %d\n",middle);  
                        return;  
                }  
        }  
        printf("this num is not found\n");  
}  
  
int main(void){  
        int array[10]={1,2,46,67,69,120,121,262,456,500};  
        display(array,10);  
        middle(array,10,121);  
        return 0;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,