学习练习 java 二分查找法
生活随笔
收集整理的這篇文章主要介紹了
学习练习 java 二分查找法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 package com.hanqi;
2
3 import java.util.*;
4
5 public class Test5 {
6
7 public static void main(String[] args) {
8 // TODO 自動生成的方法存根
9 //數組的二分查找法
10 //前提:數組要排好序
11
12 //1.隨機生成生成數組
13 Random r1 = new Random();
14 int[] array = new int[10];
15 for (int i = 0; i < array.length; i++) {
16 // 產生隨機數
17 array[i] = r1.nextInt(100);
18 }
19 // 遍歷輸出數組
20 System.out.println("數組的原始順序");
21 for (int t : array) {
22 System.out.print(t + " ");
23 }
24
25 //2.冒泡排序
26 System.out.println("排序后的順序");
27 //總的循環次數
28 for (int k = 0; k < array.length - 1; k++) {
29 //優化:每次冒泡時的循環次數,比上一次少1
30 for (int i = 0; i < array.length - 1-k; i++) {
31 if (array[i] > array[i + 1]) {
32 // 從小到大
33 int zhong = array[i];
34 array[i] = array[i + 1];
35 array[i + 1] = zhong;
36
37 }
38 }
39 System.out.println("數組第" + (k + 1) + "次排序后的順序");
40 for (int t : array) {
41 System.out.print(t + " ");
42 }
43 }
44 //3.二分查找
45
46 //1)計算出數組的中間位置:(開始位置索引+結束位置索引)/2
47
48 //2)取出中間未知的值和要查找的數字比較,根據比較結果決定下一步查找的部分
49 //3)計算出下一部分數組的中間位置
50
51 //要查找的值
52
53
54 int a=53;
55 //找到的值得位置
56
57 int w=-1;//-1代表沒找到
58 //開始索引
59 int start=0;
60 //結束索引
61 int end=array.length-1;
62 //循環條件
63 while(start<=end)
64 {
65 int m=(start+end)/2;
66 if(a==array[m])
67 {
68 w=m;//找到了
69 break;
70 }
71 else if(a>array[m])
72 {
73 start=m+1;
74 }
75 else
76 {
77 end=m-1;
78 }
79 }
80 System.out.println("找到的位置是"+w);
81 }
82
83 }
?
?
?
?
轉載于:https://www.cnblogs.com/zhoudi/p/5489440.html
總結
以上是生活随笔為你收集整理的学习练习 java 二分查找法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FCKeditor使用方法技术详解
- 下一篇: 邮政转农行要手续费吗