查找算法
来源:互联网 发布:数据录入平台 编辑:程序博客网 时间:2024/06/13 05:00
在查找算法中,有几种最为常见,分别是顺序查找,二分查找,分块查找,插补查找,二叉树查找。
顺序查找
顺序查找最为简单,就是一个一个的进行比较,找到匹配的那个。时间复杂度为O(n)。
int Find::orderFind(int *a,int len, int key){ for (int i = 0; i < len;i++){ if (a[i] == key) { return i; } } //表示没查到 return -1;}
二分查找
二分查找对排序过后的数据的算法有很好的结果,通过比较中间的那个数据和当前要查找的数据之间的大小关系,来确定要查找的数据可能位于哪个位置,例如,第一次查找过后,如果相等,就表示找到,否则比较大小,如果比查找的要小,那么在第一部分,否则在第二部分,然后,在对应的部分里面继续寻找,有两种实现方式:
第一种方法:递归调用
int Find::BinaryFind(int*a, int low, int hight, int key){ int mid; if (low > hight) return -1; mid = (hight +low) / 2; if (a[mid]==key) { return mid; }else if (a[mid]<key) { return BinaryFind(a, mid + 1, hight,key); } else{ return BinaryFind(a, low, mid - 1, key); }}
第二种方法:通过while循环来实现
int Find::BinaryFind2(int*a, int len, int key){ int low, hight, mid; low = 0; hight = len - 1; while (low<=hight) { mid = (low + hight) / 2; if (a[mid] == key){ return mid; } else if (a[mid]<key){ low = mid + 1; }else{ hight = mid - 1; } } return -1;}
二叉树查找
对于二叉树的查找算法来说,最为重要的是建立二叉树,建立二叉树的原则是左结点<根结点<右结点
0 0
- 查找算法(静态查找)
- 查找算法 二分查找
- 查找算法:二分查找
- 查找算法 - 二分法查找
- 算法--查找--二分查找
- 算法--查找--差值查找
- 查找算法:二分法查找
- 查找算法---二分查找
- 查找算法
- 查找算法
- 查找算法
- 查找算法
- 查找算法
- 查找算法
- 查找算法
- 查找算法
- 查找算法
- 查找算法:
- 对照Java学习Swift--嵌套类型(Nested Types)
- eclipse下将solr发布为web项目
- 求一个数的二进制逆序之后所对应的数
- hdu1754 I Hate it
- Project facet Java 1.8 is not supported by target runtime Apache Tomcat v7.0.
- 查找算法
- 判断两个顶点之间是否联通,是否有长度为K的路径
- Github学习之RecyclerView实现View滑动折叠效果
- 计算机存储形式与进制转换
- 安卓逆向安全从今天开始
- Codeforces 350 Div2 E Correct Bracket Sequence Editor(list模拟)
- Java 数据类型与jni数据类型对应关系
- JavaScript不能做什么
- Android进程间通信(IPC)之Messenger