首页 / 算法 / 算法学习——二分查找(折半查找)
算法学习——二分查找(折半查找)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了算法学习——二分查找(折半查找),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1901字,纯文字阅读大概需要3分钟。
内容图文
![算法学习——二分查找(折半查找)](/upload/InfoBanner/zyjiaocheng/838/7f0c13c2e0064e898c4f8c699e495e37.jpg)
算法学习——二分查找
注意点
1. 二分查找的前提是有序的数组
2. 建议使用[start,end)的区间寻找,符合规范
3. 使用的是递归法
递归的人口
private static int find(int[] temp, int x) {
//如果要查找的数x比数组的最后一个数要大,则找不到数值,返回-1
if (x > temp[temp.length - 1]) {
return -1;
}
return find(temp, 0, temp.length, x);//进入递归
}
递归的出口
private static int find(int[] temp, int start, int end, int x) {
if (end - start == 1) {
return -1;//出口
}
int mid = (start + end) / 2;
if (x < temp[mid]) {
return find(temp, start, mid, x);
} else {
if (x == temp[mid]) {
return mid;//出口
}
return find(temp, mid, end, x);
}
}
按照过程跑一遍就能够对二分查找有个深刻的理解,我觉得书上的有个while循环,要想半天才能想通
二分查找,返回数组中的查找到该数的下标值
public static void main(String[] args) {
int[] data = {5, 6, 9, 15, 19, 53, 56};
System.out.println(find(data,15));
}
private static int find(int[] temp, int x) {
if (x > temp[temp.length - 1]) {
return -1;
}
return find(temp, 0, temp.length, x);
}
private static int find(int[] temp, int start, int end, int x) {
if (end - start == 1) {
return -1;
}
int mid = (start + end) / 2;
if (x < temp[mid]) {
return find(temp, start, mid, x);
} else {
if (x == temp[mid]) {
return mid;
}
return find(temp, mid, end, x);
}
}
二分查找,比要找的数大一点的数的下标(修改一下出口)
public static void main(String[] args) {
int[] data = {5, 6, 9,9, 15, 19, 53, 56};
System.out.println(find(data,14));
}
private static int find(int[] temp, int x) {
if (x > temp[temp.length - 1]) {
return -1;
}
return find(temp, 0, temp.length, x);
}
private static int find(int[] temp, int start, int end, int x) {
if (end - start == 1) {
return end;//后一个肯定比前一个大,返回后一个,start已经比较过了,temp[start]比x要小
}
int mid = (start + end) / 2;
if (x < temp[mid]) {
return find(temp, start, mid, x);
} else {
if (x == temp[mid]) {
return mid+1;//找到了当前的数,之后的那个数肯定比当前的数大点
}
return find(temp, mid, end, x);
}
}
内容总结
以上是互联网集市为您收集整理的算法学习——二分查找(折半查找)全部内容,希望文章能够帮你解决算法学习——二分查找(折半查找)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。