• 算法-对分查找(二分查找)C++实现


    这个是个主要的查找算法。由于仅仅是把数读入就须要(N)的时间量,因此我们在说这类问题的时候都是如果读入过的。

    在算法经常使用的时间。将问题缩小为一部分(大约1/2),那么我们就觉得这个算法是O(logn)级别的。


    先说下对分查找的时间复杂度为O(logn)

    前提是已经拍序好的数列。


    //
    //  main.cpp
    //  binarySearch
    //
    //  Created by Alps on 14-7-24.
    //  Copyright (c) 2014年 chen. All rights reserved.
    //
    
    #include <iostream>
    
    int binarySearch(const int A[], int X, int N){
        int start = 0, end = 0, mid;
        end = N;
        while (start <= end) {
            mid = (start + end)/2;
            if (X > A[mid]) {
                start = mid+1;
                continue;
            }else if (X < A[mid]){
                end = mid-1;
                continue;
            }else{
                return mid;
            }
        }
        return -1;
    }
    
    int main(int argc, const char * argv[])
    {
        int A[]={1 ,4 , 6, 8, 19, 34, 93};
        int N = sizeof(A)/sizeof(int);
        int X = 19;
        
        int locate = binarySearch(A, X, N);
        if (locate == -1) {
            printf("Can't find the element %d
    ",X);
        }else{
            printf("The element %d is locate in %d
    ",X,locate);
        }
        
        return 0;
    }
    

    这里面没什么原理。

    。问题非常easy~ 

  • 相关阅读:
    sql连接查询中的分类
    HTML之页面镶嵌体验
    JavaScript之搜索框
    (转)Android之常用功能方法大集合
    JAVA之执行cmd命令
    Html之网页分屏浏览
    Javascript之三种按钮点击事件
    用JavaScript做一个小小设计
    JavaBean之简单应用JSP页面
    计算器
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7050195.html
Copyright © 2020-2023  润新知