现在的位置: 首页 > 综合 > 正文

循环递增链表中查找元素位置

2013年10月24日 ⁄ 综合 ⁄ 共 711字 ⁄ 字号 评论关闭

#include<stdio.h>

int searh(int array[], int num, int len){
    int mid = 0;
    int left = 0;
    int right = len-1;
    int addr = -1;
    while(left <= right ){
        mid  = (left + right) >> 1;
        if(array[mid] == num)
        {
            addr = mid;
            break;
        }
        if(array[left] <= array[mid]){
            if(array[left] <= num && num < array[mid]){
                right = mid -1;
            }
            else{
                left = mid + 1;
            }
        }
        else{
            if(array[mid] < num && num <= array[right]){
                left = mid +1;
            }
            else{
                right = mid - 1;
            }
        }
    }
    return addr;
}
int main(){
    int array[] = {8,9,10,2,4,5,6,7};
    printf("%d",searh(array,8, 8));
}

抱歉!评论已关闭.