第十七节 算法之二分查找
来源:互联网 发布:cmd怎么测试端口 编辑:程序博客网 时间:2024/05/13 11:58
C语言程序的经典与否很大在于算法是否经典,这一节开始朱兆祺带领大家学习C语言算法篇。
就拿二分查找下手。
// text.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int BinarySeach(int *iArray, int key, int n)
{
int iLow = 0 ;
int iHigh = n - 1;
int iMid;
//大家想想这是循环呢?还是递归呢。
while (iLow <= iHigh) {
iMid = (iHigh + iLow)/2;
if (iArray[iMid] > key) {
iHigh = iMid - 1 ;
} else if (iArray[iMid] < key) {
iLow = iMid + 1 ;
} else{
return iMid ;
}
}
}
//测试程序
int main(int argc, char* argv[])
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n" , BinarySeach(a,6,10));
return 0;
}
递归调用就是函数对自身的调用,但是一定要慎重使用,递归涉及到栈是否会溢出等问题,还有就是算法是否合适,并非说任何时候都是适合的。
我记得谭浩强的《C……》中用递归算法来解决阶乘的问题,我就疑惑了,使用循环解决岂不是更简单明了。
- 第十七节 算法之二分查找
- 算法之二分查找
- 算法之二分查找
- 算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找算法
- 算法之二分查找法
- 常见算法之二分查找
- 算法学习之二分查找
- python算法之二分查找
- 第十六节 机试题之大整数减法与乘法
- 面向对象设计原则
- BCD来调试的批处理
- Android常用的工具类
- java的类问题!
- 第十七节 算法之二分查找
- 通过串口编程实现GPRS模块在网络上传输数据
- 第十八节 数据结构之单向链表
- J2EE系统异常的处理准则
- android之PackageManager简介
- 第十九节 数据结构之双向链表
- 第二十节 数据结构之栈
- Java中的修饰词使用方法总结
- log4j.properties