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

[算法] 循环有序数组查找非递归实现

时间:2014-12-15 07:52:29      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   on   div   

非递归实现

#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\n", ret); return 0; }

 

[算法] 循环有序数组查找非递归实现

标签:style   blog   io   ar   color   sp   for   on   div   

原文地址:http://www.cnblogs.com/igloo1986/p/4164071.html

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