经典算法学习——二分查找
2016-08-06 13:47
239 查看
在所有的查找算法中,二分查找是最简单一种。二分查找要求原先的序列是已经排序的,每次都是以序列中间的数字作为比较,如果小于中间的数字,那么就在序列左边继续递归查找;如果大于中间的数字,那么就在序列右边继续递归查找。直到找到该数字,或者直到序列中只有一个数字的时候都还没找到,则查找失败。查找的时间复杂度可以达到O(logN),应该说是除了数组按下标查找O(1)以外的最快的查找方式了。示例代码上传至 https://github.com/chenyufeng1991/BinarySearch 。
使用C语言完整实现如下:
// 实现二分查找
#include <stdio.h>
#include <stdlib.h>
void BinarySearch(int *arr, int start, int end, int num);
int main(int argc, const char * argv[])
{
int array[] = {4,5,6,7,8,9};
BinarySearch(array, 0, 5, 99);
return 0;
}
void BinarySearch(int *arr, int start, int end, int num)
{
int mid = (start + end) / 2;
if (arr[mid] == num)
{
printf("%d ",mid);
return ;
}
if (start == end)
{
printf("没有找到");
return ;
}
if (num < arr[mid])
{
BinarySearch(arr, start, mid, num);
}
if (num > arr[mid])
{
BinarySearch(arr, mid + 1, end, num);
}
return ;
}
使用C语言完整实现如下:
// 实现二分查找
#include <stdio.h>
#include <stdlib.h>
void BinarySearch(int *arr, int start, int end, int num);
int main(int argc, const char * argv[])
{
int array[] = {4,5,6,7,8,9};
BinarySearch(array, 0, 5, 99);
return 0;
}
void BinarySearch(int *arr, int start, int end, int num)
{
int mid = (start + end) / 2;
if (arr[mid] == num)
{
printf("%d ",mid);
return ;
}
if (start == end)
{
printf("没有找到");
return ;
}
if (num < arr[mid])
{
BinarySearch(arr, start, mid, num);
}
if (num > arr[mid])
{
BinarySearch(arr, mid + 1, end, num);
}
return ;
}
相关文章推荐
- 【翠字营原创】基于 cryptlib.lib 开发的几种加密解密算法经典例子 涉及: MD5 AES AES-CBC 希望对大家学习有帮助!
- <转>算法面试:精选微软等公司经典的算法面试100题 第1-40题 仅供学习
- 【从零学习经典算法系列】分治与递归1——递归表达式与解法初步
- 【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)
- 【从零学习经典算法系列】分治策略实例——快速排序(QuickSort)
- 语言的学习基础,100个经典的算法
- 《Delphi 算法与数据结构》学习与感悟[1]: 通过 "顺序查找" 与 "二分查找" 说明算法的重要性
- 十五个经典算法研究与总结学习笔记之A*搜索算法1
- 机器学习经典算法之-----最小二乘法
- 【从零学习经典算法系列】分治策略实例——二分查找
- C语言的学习要从基础,100个经典的算法 (转载)
- C语言的学习基础,100个经典的算法
- 数据挖掘十大经典算法学习之K均值(K-means)聚类算法
- 十五个经典算法研究与总结学习笔记之A*搜索算法2
- 机器学习经典算法4-logistic回归
- 语言的学习基础,100个经典的算法
- 数据挖掘十大经典算法学习之C4.5决策树分类算法及信息熵相关
- 经典算法之传染病问题 递归用法学习
- 关于 算法竞赛入门经典 的一些学习经历与体会
- 机器学习经典算法12-SVD及其在推荐中的应用