查找算法系列(一):二分查找( 描述+代码)
来源:互联网 发布:java list 自定义排序 编辑:程序博客网 时间:2024/04/30 02:53
1.分析
1. 需要三个变量
1. nLow
2. nMid
3. nHigh
2. 过程
设待查数据为nFind, 数组为arr 如果 nFind > arr[nMid] nLow = nMid + 1; 否则 nHigh = nMid - 1;
3. 时间复杂度: O(log^n)
#include<stdio.h>#include<string.h>int BinaryChop(int* arr, int nLen, int nFind){ if(arr == NULL || nLen <= 0) return -1; int nLow = 0; int nHight = nLen -1 ; int nMid = (nLow + nHight)/2; while(nLow <= nHight) { if(nFind == arr[nMid]) { return nMid; } else if(nFind < arr[nMid]) { nHight = nMid - 1; } else { nLow = nMid + 1; } nMid = (nLow + nHight)/2; } return -1;}void Print(int arr[], int len){ for(int i=0; i< len;i++) { printf("%d ",arr[i]); } printf("\n");}void test(int* arr, int nLen, int nFind, int except){ int res = BinaryChop(arr,nLen,nFind); if(except == res) { printf("Binary chop: %d is find in %d \n", nFind, res); } else { printf("Binary chop: %d is not in arr,res = %d \n",nFind,res); }}int main(){ int arr[] = {1,2,3,5,6,9,11,13,15,17,19,23,45,63,79,80,91,101}; int nLen = sizeof(arr)/sizeof(arr[0]); Print(arr,nLen); test(arr, nLen, 10,-1); test(arr, nLen, 11,6); test(arr, nLen, 19,10); test(arr, nLen, 3,2); return 0;}
阅读全文
0 0
- 查找算法系列(一):二分查找( 描述+代码)
- 基础算法系列(二)查找算法之二分查找
- 查找(一)二分查找
- 二分查找(折半查找)算法及代码
- 算法基础(一)------ 二分查找(折半查找)
- 基础算法系列(一)查找算法之顺序查找
- 算法系列(二)查找算法--基本查找和二分查找
- 二分查找算法(折半查找算法)
- 二分查找算法(折半查找算法)
- 折半查找算法(二分查找算法)
- 查找算法(2)--二分查找算法
- (一)算法--查找算法顺序查找和二分查找(递归和非递归方式)
- 二分查找算法(快速查找)
- 搜索算法----二分查找(折半查找)
- 算法:二分查找(折半查找)
- 实现折半查找算法(二分查找)
- 二分查找(C语言描述)
- 排序与查找(一): 二分查找
- 字符串内排序
- HP-UX的硬盘资源的逻辑卷管理
- 【死磕Java并发】-----J.U.C之阻塞队列:ArrayBlockingQueue
- python 安装 pip
- https_request函数
- 查找算法系列(一):二分查找( 描述+代码)
- 小学生算术
- matlab中数组的排序以及转置
- cookie和session的认知
- HTML中的<select>标签如何设置默认选中的选项
- Tomcat7目录结构详解(非常详细)
- Maven的oracle的jar包导入
- 动态内存管理总结(malloc、calloc、realloc的区别),以及内存泄漏常见问题
- Python3使用csv模块csv.writer().writerow()保存csv文件,产生空行的问题