zoukankan      html  css  js  c++  java
  • 折半查找(C语言)

    一、二分查找

    CC++里,二分查找是针对有序数组所用的一种快速查找元素的方法。

    二、二分查找的条件以及优缺点

    条件:针对有序数组(元素从小到大或从大到小)

    优点:查询速度较快,时间复杂度为On

    缺点:有硬性条件的限制,而且即使查到后,插入与删除困难。

    三、图片详解

    四、代码

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #define N 15
    int main()
    {
        int i, number, top, bott, mid, loca, a[N], flag = 1, sign;
        char c;
        printf("enter data 
    ");
        scanf("%d", &a[0]);
        i = 1;
        while (i<N)
        {
            scanf("%d", &a[i]);
            if (a[i]>=a[i-1])
            {
                i++;
            }
            else
            {
                printf("enter this data again: 
    ");
            }
        }
        printf("
     ");
        for (i = 0; i < N; i++)
        {
            printf("%5d", a[i]);
        }
        printf("
     ");
        while (flag)
        {
            printf("input number to look for:");
            scanf("%d", &number);
            sign = 0;
            top = 0;//top 是查找区间的其实位置
            bott = N - 1;//bott是查找区间的最末位置
            if ((number<a[0])||(number>a[N-1]))//要查找的数不在查找区间
            {
                loca = -1;//表示找不到
            }
            while ((!sign)&&(top<bott))
            {
                mid = (top + bott) / 2;
                if (number==a[mid])
                {
                    loca = mid;
                    printf("Has found %d,its position is %d 
    ", number, loca + 1);
                    sign = 1;
                }
                else if (number < a[mid])
                {
                    bott = mid - 1;
                }
                else
                {
                    top = mid + 1;
                }
            }
            if (!sign||loca==-1)
            {
                printf("can not find %d. 
    ", number);
            }
            printf("continue or not?(Y/N)");
            scanf("%c", &c);
            if (c=='N'||c=='n')
            {
                flag = 0;
            }
        }
    }
  • 相关阅读:
    spring scope prototype与singleton区别
    JAVA中的内存们
    汉诺塔问题
    关于设置tomcat端口为80的事
    struts2表单提单细节处理
    volatile的作用
    Java并发编程:Thread类的使用
    git的几个小技巧
    UEdit插件使用
    MySQL优化必须调整的10项配置
  • 原文地址:https://www.cnblogs.com/qixinbo/p/7685478.html
Copyright © 2011-2022 走看看