折半查找(C语言)

        折半查找:当数组元素有序时,利用折半查找,时间复杂度为O(logN)。利用双指针,一个指向起点(left),一个指向终点(right)。定义mid等于(left+right)/2,向下取整(也可以向上,算法实现是一样的,但是做成二叉树的时候不一样,注意区分)。若mid的值等于要查找的值key则直接返回mid,若mid的值小于key则left=mid+1,否则right=mid-1。一直重复上面操作,直至找到目标。

        算法实现如下:

#include <stdio.h>

typedef struct{
    int nums[20];
    int length;
}Nums,*PNums;

int search(PNums,int);

int main(){
    Nums numbers = {
  {0},0};
    printf("请输入数字,不超过20个,输入-1表示结束:\n");
    int temp = 0,key = -1;
    while(1){
        scanf("%d",&temp);
        if(temp == -1||numbers.length == 20){
            break;
        }
        numbers.nums[numbers.length++] = temp;
    }//这里的输入大家可以换成自己的测试用例

    printf("请输入需要查找的数字:");
    scanf("%d",&key);

    int result = search
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值