二分法查找
来源:互联网 发布:网络兼职刷信誉骗局 编辑:程序博客网 时间:2024/04/29 09:38
1 package method.search;
2
3 import java.io.*;
4 import method.sort.*;
5
6 public class BinarySearch
7 {
8
9
10 //二分法查询方法
11 public static boolean binarySearch(int[] array, int value)
12 {
13 //得到数组的最地位的值
14 int low = 0;
15 //得到数组的最高位的值
16 int high = array.length - 1;
17 //得到当前和所需要查询的值比较的数组里面的值
18 int middle = 0;
19
20 while(low <= high)
21 {
22 middle = (low + high) / 2;
23 for(int k = 0; k < array.length; k++)
24 {
25 System.out.print(array[k]);
26 //此if语句会打印这个方法的查询过程,#表示每次要比较的数
27 if(k == middle)
28 {
29 System.out.print("#");
30 }
31 System.out.print(" ");
32 }
33 System.out.println();
34
35 //如果成立,说明已经找到所需要查询的值
36 if(value == array[middle])
37 {
38 return true;
39 }
40
41 //如果所需要找的值比中间值大,则需要把最低位的值移动到中间值加1的位置
42 if(value > array[middle])
43 {
44 low = middle + 1;
45 }
46
47 //如果所需要找的值比中间值小,则需要把最高位的值移动到中间值减1的位置
48 if(value < array[middle])
49 {
50 high = middle - 1;
51 }
52 }
53
54 return false;
55 }
56
57 public static void main(String[] args)
58 {
59 int[] array = new int[]{23, 54, 3, 5, 7, 8, 12, 88, 99, 2 , 44};
60 String s = "";
61
62 //输入所需要查找的数字
63 try
64 {
65 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
66 s = in.readLine();
67 }
68 catch(IOException e){}
69
70 int input = Integer.parseInt(s);
71 BubbleSort.bubbleSort(array);
72
73 for(int i = 0; i < array.length; i++)
74 {
75 System.out.print(array[i] + " ");
76 }
77
78 System.out.println();
79 boolean f = binarySearch(array, input);
80
81 //判断所需要找的值是否属于此数组
82 if(f)
83 {
84 System.out.println(input + "属于" + "此数组");
85 }
86 else
87 {
88 System.out.println(input + "不属于" + "此数组");
89 }
90
91 }
92 }
2
3 import java.io.*;
4 import method.sort.*;
5
6 public class BinarySearch
7 {
8
9
10 //二分法查询方法
11 public static boolean binarySearch(int[] array, int value)
12 {
13 //得到数组的最地位的值
14 int low = 0;
15 //得到数组的最高位的值
16 int high = array.length - 1;
17 //得到当前和所需要查询的值比较的数组里面的值
18 int middle = 0;
19
20 while(low <= high)
21 {
22 middle = (low + high) / 2;
23 for(int k = 0; k < array.length; k++)
24 {
25 System.out.print(array[k]);
26 //此if语句会打印这个方法的查询过程,#表示每次要比较的数
27 if(k == middle)
28 {
29 System.out.print("#");
30 }
31 System.out.print(" ");
32 }
33 System.out.println();
34
35 //如果成立,说明已经找到所需要查询的值
36 if(value == array[middle])
37 {
38 return true;
39 }
40
41 //如果所需要找的值比中间值大,则需要把最低位的值移动到中间值加1的位置
42 if(value > array[middle])
43 {
44 low = middle + 1;
45 }
46
47 //如果所需要找的值比中间值小,则需要把最高位的值移动到中间值减1的位置
48 if(value < array[middle])
49 {
50 high = middle - 1;
51 }
52 }
53
54 return false;
55 }
56
57 public static void main(String[] args)
58 {
59 int[] array = new int[]{23, 54, 3, 5, 7, 8, 12, 88, 99, 2 , 44};
60 String s = "";
61
62 //输入所需要查找的数字
63 try
64 {
65 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
66 s = in.readLine();
67 }
68 catch(IOException e){}
69
70 int input = Integer.parseInt(s);
71 BubbleSort.bubbleSort(array);
72
73 for(int i = 0; i < array.length; i++)
74 {
75 System.out.print(array[i] + " ");
76 }
77
78 System.out.println();
79 boolean f = binarySearch(array, input);
80
81 //判断所需要找的值是否属于此数组
82 if(f)
83 {
84 System.out.println(input + "属于" + "此数组");
85 }
86 else
87 {
88 System.out.println(input + "不属于" + "此数组");
89 }
90
91 }
92 }
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- magento的google站点地图的生成
- hdu acn 1028 Ignatius and the Princess III
- JAVA中实现多线程的两种方式
- IndentationError:expected an indented block错误的解决办法
- linux下 oracle 11g 手工建库
- 二分法查找
- C语言小知识--持续更新
- c#中关于结构体和字节数组转化
- Linux桌面管理工具
- C++基础学习系列第一部分——数组和指针
- java中的URLEncoder和URLDecoder类
- 高斯日记
- NoSql-MongoDB和Cassandra
- 关于“ 以前的定义是“枚举数” ”问题的解决办法