探索二维矩阵

从一组升序的数中查找到某个数
查找
顺序查找/线性查找
将查找值顺序逐个与结点值进行比较,相等即为查找成功,否则查找失败
二分查找
首先将结点按关键字排序,其次将查找值与中间位置的值比较,相等,查找成功;不等,则中间数据大于或小于查找值,无论怎样查找将在一半的数据中查找
哈希表
对于给定的关键字 K,将其带入哈希函数中,求得与该关键字对应的数据的哈希地址,如果该地址中没有数据,则证明该查找表中没有存储该数据,查找失败:如果哈希地址中有数据,就需要做进一步的证明(排除冲突的影响),找到该数据对应的关键字同 K 进行比对,如果相等,则查找成功;反之,如果不相等,说明在构造哈希表时发生了冲突,需要根据构造表时设定的处理冲突的方法找到下一个地址,同地址中的数据进行比对,直至遇到地址中数据为 NULL(说明查找失败),或者比对成功。
代码(二分查找)
import java.util.Arrays;
import java.util.Scanner;
public class HW01 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入m、n的值");while(scan.hasNextLine()){int m,n;m = scan.nextInt();n = scan.nextInt();System.out.println("-------------");int[] arr = new int[m*n]; //直接创建一维数组排序for(int i = 0;i < m*n;i++){arr[i] = scan.nextInt();}Arrays.sort(arr);System.out.println("请输入target的值");int target = scan.nextInt();System.out.println("target = "+target);HW01 hw01 = new HW01();System.out.println(hw01.search(arr, target));}}//二分查找public boolean search(int array[], int t){int head = 0;int end = array.length;while(head <= end){int middle = (head + end)/2;if(t == array[middle]){return true;}else if(t > array[middle]){head = middle + 1;}else{end = middle - 1;}}return false;}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
