zoukankan      html  css  js  c++  java
  • [算法] 循环有序数组查找非递归实现

    非递归实现

    #include<stdio.h>
    #include
    <stdlib.h> int isOrdered(int *array, int begin, int end) { return *(array+end) > *(array+begin) ? 1 : 0; } int contains(int *array, int begin, int end, int theNum) { return theNum >= *(array + begin) && theNum <= *(array + end) ? 1 : 0; } int CyclicOrderedBinarySearchNonRecursively(int *array, int begin, int end, int theNum) { while(end >= begin) { if(begin == end) { if(*(array + begin) == theNum) { return begin; } else { return -1; } } int mid = (begin + end) / 2; if(isOrdered(array, begin, mid)) { if(contains(array, begin, mid, theNum)) { end = mid; } else { begin = mid + 1; } } else { if(contains(array, mid + 1, end, theNum)) { begin = mid + 1; } else { end = mid; } } } return -1; } int search_nonrecursively(int *array, int n, int theNum) { return CyclicOrderedBinarySearchNonRecursively(array, 0, n - 1, theNum); } int main() { int *array = (int *)malloc(sizeof(int)*16); int i; for(i = 0; i < 16; i++) { *(array + i) = (i+5) % 16; }

    int ret = search_nonrecursively(array, 16, 10); printf("%d ", ret); return 0; }
  • 相关阅读:
    uniapp 请求附近地址列表
    uniapp 图片视频上传
    城市定位
    日历签到
    uniapp拼团倒计时函数
    时间过滤器
    倒计时函数
    vuex的使用
    毛玻璃效果
    Pullword 中文分词
  • 原文地址:https://www.cnblogs.com/igloo1986/p/4164071.html
Copyright © 2011-2022 走看看