【分治】二分查找

设序列n

1.分:在序列n中找到key,相当于在left, right中找到key即可

2.治:每次取middle与key比较,若相同则返回middle + 1,否则返回-1

#include <stdio.h>

int Divide_conquer(int n_Susake[], int key, int length)
{
    int left = 0, right = length + 1, middle;
    while (left != right)
    {
        middle = (left + right) / 2;
        if (n_Susake[middle] == key) return middle + 1;
        else if (n_Susake[middle] < key) left = middle + 1;
        else right = middle - 1;
    }
    return -1;
}

int main(int argc, char *argv[])
{
    int n_Susake[] = { 1, 2, 3, 4, 5 };

    printf("%d\n", Divide_conquer(n_Susake, 4, 5));
    return 0;
}

 

posted on 2014-03-29 01:54  至死丶不渝  阅读(145)  评论(0编辑  收藏  举报

导航