顺序查找算法
//定义数组
int[] arrays = new int[]{
3, 1, 12, 25, 9};
/*
说一下顺序查找的原理:从头到尾,一个一个对比。
数据量较大的时候,使用该算法是不明智的。
但是该算法不要求数组有序。
*/
for (int i = 0; i < arrays.length; i++) {
if (arrays[i] == 9) {
System.out.println("I get it");
System.out.println("index:" + i);
break;
}
}
二分查找算法
//定义数组
int[] arrays = new int[]{
1, 3, 8, 55, 75, 99};
/*
使用二分查找的前提:数组有序(下方算法默认支持升序)
说一下二分查找的原理:
将n个元素分成大致相等的两部分,取a[n/2]与x做比较,
如果x=a[n/2],则找到x,算法中止;
如果x<a[n/2],则只要在数组a的左半部分继续搜索x,
如果x>a[n/2],则只要在数组a的右半部搜索x。
*/
//查找的数
int findNumber = 55;
//初始化最小index
int low = 0;
//初始化最大index
int high = arrays.length - 1;
/*
low只能小于等于high
*/
while (low <= high) {
//中间位置的index
int mid = (high + low) / 2;
//如果查找的值等于中间的值
if (findNumber == arrays[mid]) {
System.out.println("I get it");
break;
}
//如果查找的值小于中间的值
else if (findNumber < arrays[mid]) {
//把high变为mid左边的数
high = mid - 1;
}
//如果查找的值大于中间的值
else if (findNumber > arrays[mid]) {
//把low变为mid右边的数
low = mid + 1;
}
}