数据结构与算法——查找(顺序查找、二分查找)
2019-03-11 20:33
295 查看
查找算法:
1、顺序查找:从头到尾逐个比较
优点:对数据没有要求,算法稳定
缺点:效率低,不适合大规模的数据的查找
2、二分查找:数据必须是有序的,然后与中间值比较,比中间大的向右边部分查找,
优点:效率极高
缺点:数据必须先排序好
代码如下:
#include <stdio.h> #include <stdlib.h> // 顺序查找 int ordef_find(int arr[],size_t len,int key) { for(int i=0; i<len; i++) { if(arr[i] == key) return i; } return -1; } // 二分查找-数据有序 int _binary_find(int arr[],int left,int right,int key) { if(left >= right) return -1; int p = (left+right)/2; if(arr[p] == key) return p; if(arr[p] > key) return _binary_find(arr,left,p,key); else return _binary_find(arr,p+1,right,key); } int binary_find(int arr[],size_t len,int key) { return _binary_find(arr,0,len,key); } // 使用循环实现二分查找 /*int binary_find(int arr[],size_t len,int key) { int left = 0 , right = len; while(left < right) { int p = (left + right) / 2; if(arr[p] == key) return p; if(arr[p] > key) right = p; else left = p+1; } return -1; }*/ int main() { int arr[10] = {}; for(int i=0; i<10; i++) { arr[i] = i+10; printf("%d ",arr[i]); } printf("\n"); printf("%d\n",binary_find(arr,10,21)); }
相关文章推荐
- 2. C#数据结构与算法 -- 查找算法(顺序查找,哈希查找,二分查找(折半),索引,二叉)
- 数据结构与算法专题之查找与排序——静态查找(顺序、二分、哈希)
- C语言:顺序查找和二分查找
- C语言:顺序,二分查找,冒泡排序实践项目
- 数据结构与算法实践 之 二分查找初识
- 《数据结构与算法》学习笔记3 有序数组与二分查找
- 查找(顺序、二分、斐波那契和插值)算法的实现和测试
- 数据结构上机实验之顺序查找(二分查找)
- 顺序查找及二分查找--Java
- 用java实现的一些插入(顺序和乱序)和查找(顺序和二分)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 顺序查找,二分查找
- 顺序查找与二分查找
- 数据结构基础(2) --顺序查找 & 二分查找
- 查找算法总结之顺序查找、二分查找、静态树查找
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法(二分查找、顺序统计(中值))
- 静态查找表 - 顺序查找、二分查找、插值查找、斐波纳契查找
- 《数据结构与算法》学习笔记19 递归_二分查找