算法-對分查找(二分查找)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\n",X);
    }else{
        printf("The element %d is locate in %d\n",X,locate);
    }
    
    return 0;
}

這里面沒什么原理。

。問題非常easy~ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM