Java中查找数组是否包含输入的值(原生/二分法)
程序员文章站
2022-04-23 15:09:06
知识点: 原生方法范围广,可以是字符串,数字等,而二分法必须是有序数的数列。实例: 给定二维数组: int [ ] [ ] ary = {{1,2,3},{4,5,6}} 键盘输入一个值, 查询数组是否含有该值?原生方法:public static void main(String[] args) { // 定义二维数组 //键盘输入数字 Scanner scanner = new Scanner(System.in); /....
知识点: 原生方法范围广,可以是字符串,数字等,而二分法必须是有序数的数列。
实例: 给定二维数组: int [ ] [ ] ary = {{1,2,3},{4,5,6}} 键盘输入一个值, 查询数组是否含有该值?
- 原生方法:
public static void main(String[] args) {
// 定义二维数组
//键盘输入数字
Scanner scanner = new Scanner(System.in);
//判断二维数组是否包含输入的数字
int [][] ary = {{1,2,3},{4,5,6}};
System.out.println("请任意输入一个数值:");
int i1 = scanner.nextInt();
// 立flag,这是一种思想,必须牢记掌握哦!
boolean flag = true;
for (int i = 0; i <ary.length ; i++) {
for (int j = 0; j <ary[i].length ; j++) {
if(i1==ary[i][j]) {
System.out.println("数组里包含该数字");
flag = false;
break;
}
}
}
if(flag) {
System.out.println("不包含");
}
}
-
二分法: 给定一维数组 ary = [1,5,6,7,9,26,55,77,88,99,198,990,740]
// 查找ary数组里,是否含有键盘输入的数字
public static void main(String[] args) {
int [] ary = {1,5,6,7,9,26,55,77,88,99,198,990,740};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字:");
int destination = scanner.nextInt();
int head = 0;// 初始索引值
int end = ary.length-1;//末尾索引值
boolean isFlag = true;
while(head<=end) {
int middle = (head+end)/2;
if(destination == ary[middle]) {
System.out.println("找到了输入的值,下标为:"+middle);
isFlag = false;
break;
}else if (destination < ary[middle]) {
end = middle - 1;
}else{
head = middle + 1;
}
}
if (isFlag) {
System.out.println("很遗憾,没有找到你要的值!");
}
编程思想: 两个例子中都运用了 isFlag 打标签的方法,来判断条件不满足时,执行的语句, 如果不立flag, 把语句写到循环里,可能会输出多次很遗憾。
二分法思想 : 针对有序数组,字符串不可以,如果查询字符串的话,可以用equals是否相等 来判断 是否存在。
本文地址:https://blog.csdn.net/SoULikeMe/article/details/109892420
上一篇: DFS和BFS的比较
下一篇: 少梁之战过程简介 少梁之战的结果如何