码迷,mamicode.com
首页 > 编程语言 > 详细

算法题之有序数组被折断后的查找

时间:2015-06-09 19:22:36      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

给出一个有序数组,假设其为升序,随机找到一个点,将这个点后面的序列移到数组前面,构成一个新的序列。

要求对这个新的数组进行查找,找不到返回-1,否则返回其在数组中的位置。

比如输入数组[7,8,9,1,2,3,4,5,6]

查找1,返回3;

查找8,返回1;

查找0,返回-1;

 

int searchDisorderedArray(int a[], int key, int begin, int end)
{
    if(begin == end && a[begin] != key)
        return -1;

    int mid = (begin+end)/2;

    if(a[mid] == key)
        return mid;

    if(a[mid] > a[end])
    {
        if(key >= a[begin] && key <=a[mid])
            return searchDisorderedArray(a, key, begin, mid-1);
        else
            return searchDisorderedArray(a, key, mid+1, end);
    }
    else
    {
        if(key >= a[mid] && key <=a[end])
            return searchDisorderedArray(a, key, mid+1, end);
        else
            return searchDisorderedArray(a, key, begin, mid-1);
    }
}

  

算法题之有序数组被折断后的查找

标签:

原文地址:http://www.cnblogs.com/sparkles/p/4563809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!