public class Search {
/*
* 顺序查找,返回关键字在数组中第一次出现的位置, 没找到返回-1
*/
public static int searchSeq(int[] a, int key){
for(int i = 0; i < a.length; i++){
if (a[i] == key){
return i + 1;
}
}
return -1;
}
/*
* 折半查找,要求数组是有序排列的(从小到大)
* */
public static int searchBin(int[] a, int key){
int low = 0, high = a.length - 1;
while (low <= high){
int mid = (low+high)/2;
if (a[mid] == key){
return mid+1;
}else if(a[mid] > key){ //如果中间值大于查找值,那么将高位标记减一
high = mid - 1;
}else{ //如果中间值小于查找值,将低位标记加一
low = low + 1;
}
}
return -1;
}
public static void main(String[] args) {
// int[] seq = {2, 4, 5, 6, 8, 10, 3};
// int[] bin = {1, 2, 3, 4, 5, 6, 7, 8};
// System.out.println(searchSeq(seq, 6));
// System.out.println(searchBin(bin, 8));
}
}
相关文章
- 【算法学习笔记】堆排序和归并排序、其他几种排序的代码实现、比较和应用(习题)
- Java应用【七】使用Java实现数据结构和算法:排序、查找、图
- Java刷题常用的数据结构总结
- Java常用的几种集合, Map集合,Set集合,List集合
- 精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南
- 精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]
- 使用PowerShell实现服务器常用软件的无人值守安装
- 国内“谁”能实现chatgpt,短期穷出的类ChatGPT简评(算法侧角度为主),以及对MOSS、ChatYuan给出简评,一文带你深入了解宏观技术路线。