博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[算法] 循环有序数组查找非递归实现
阅读量:6531 次
发布时间:2019-06-24

本文共 1399 字,大约阅读时间需要 4 分钟。

非递归实现

#include
#include
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;}

 

转载于:https://www.cnblogs.com/igloo1986/p/4164071.html

你可能感兴趣的文章
Processing编程学习指南2.7 Processing参考文档
查看>>
架构师速成-架构目标之伸缩性\安全性
查看>>
执行可运行jar包时读取jar包中的文件
查看>>
linux下ExtMail邮件使用及管理平台
查看>>
linux中iptables设置自建dns服务器的端口
查看>>
基于Yum安装zabbix3.0
查看>>
Master-work模式
查看>>
RT-Thread--时间管理
查看>>
BUPT 63T 高才生 找最佳基站
查看>>
linux 学习(二)防火墙
查看>>
scala001
查看>>
android - SpannableString或SpannableStringBuilder以及string.xml文件中的整型和string型代替...
查看>>
自己选择的路,跪着走完吧——一个兔纸的话
查看>>
三端稳压器各个参数解释
查看>>
算法(Algorithms)第4版 练习 1.3.14
查看>>
virtual PC 打造IE6、IE7、IE8、IE9等多版本共存原版测试环境
查看>>
js面向对象1
查看>>
内部类
查看>>
高速数论变换(NTT)
查看>>
Springmvc的跳转方式
查看>>