二分查找vc线性查找
程序员文章站
2024-03-20 10:50:28
...
public static int binarySearch(int[] args ,int key ){
int upNum = args.length -1;
int lowNum =0;
int mid = lowNum +(upNum-lowNum)/2;
/**int mid =(low + high)
* 2;在一般情况下, 这个语句是不会出错的, 但是, 当low+high的值超过了
* 最大的正int值 (231 - 1) 的时候, mid会变成负值, 这个时候, 会抛出
* ArrayIndexOutOfBoundsException 异常..
*/
int midValue =args[mid];
if(midValue >key){
upNum =mid -1;
}else if(midValue < key){
lowNum = mid +1;
}else{
return key;
}
return -(low+1);//找不到
}
/**
* 线性查找
* 从args中查找key;返回查找到的次数
* foreach
*/
public int linearSearch(int[] args, int key) {
long beginTime = System.currentTimeMillis();
System.out.println(beginTime);
System.out.println(System.currentTimeMillis());
int m = -1;
for (int n : args) {
System.out.println("--------------");
System.out.println(n + "***");
if (n == key) {
System.out.println("--------------");
System.out.println("找到");
long endTime = System.currentTimeMillis();
System.out.println(endTime);
System.out.println(endTime - beginTime);
return m = n;
} else {
continue;
}
}
return m;
}
static int sequenceSearching(int[] arr, int len, int key) {
int i;
for (i = 0; i < len && arr[i] != key; i++);
if (i < len) {// 找到了,因为arr[i]==key
System.out.println(i);
return i;
} else {//没找到
return -1;
}
//return (i<len)?(i):(-1);
}
上一篇: 语义分割学习笔记(二)——Windows下 Lableme 配置
下一篇: 艳辉邮箱系统1.0