二进制搜索

二进制搜索

// 二进制搜索.cpp : 自定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stdio.h>
#include<windows.h>

void main()
{
    int data[11] = {0,12,23,29,38,44,57,64,75,82,98};
    int i, t = 1, n = 10, m, cnt = 0, input, ok = 0;
    printf("\n<<Binary search>>\n");
    printf("\nSorted data:");
    for (i = 1; i < 11; i++)
        printf("%d ",data[i]);
    puts("");
    printf("\nPlease enter a number from data:");
    scanf("%d",&input);
    printf("\nSearch......\n");
    m = (t + n) / 2;                //键值在第M个上
    while (t <= n&&ok == 0)
    {
        printf("\nData when searching %2d time(s) is %d !",++cnt,data[m]);
        if (data[m]>input)//要查找的数据小于键值,则数据在键值的前面
        {
            n=m - 1;
            printf("--->Choice number is smaller than %d",data[m]);
        }
        else                     //否则数据在键值的后面
        if (data[m] < input)
        {
            t = m + 1;
            printf("--->Choice number is bigger than %d",data[m]);
        }
        else
        {
            printf("\n\nFound,%d is the %dth record in data!",input,m);
            ok = 1;
        }
        m = (t+n)/ 2;
    }
    if (ok == 0)
        printf("\n\nSorry,%d not found!",input);
    printf("\n");
    system("pause");
}

測试1:

版权声明:本文博主原创文章,欢迎大家分享和纠正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值