1 public static void main(String[] args) {
2 // 冒泡排序
3 // 定义一个数组,存储一些数据
4 int[] arr = {5, 3, 1, 2, 9, 6};
5 System.out.println("=========冒泡排序==========");
6 // 定义一个循环轮数
7 for (int i = 0; i < arr.length - 1; i++) {
8 // 定义一个循环控制每轮的次数,占位
9 for (int j = 0; j < arr.length - i - 1; j++) {
10 if (arr[j] > arr[j+1]){ // 从小到大
11 // if (arr[j] < arr[j+1]){ // 从大到小
12 int tmp = arr[j+1];
13 arr[j+1] = arr[j];
14 arr[j] = tmp;
15 }
16 }
17 }
18
19 // 循环输出便利的结果
20 for (int i = 0; i < arr.length; i++) {
21 System.out.print(arr[i] + "\t");
22 }
23 System.out.println();
24
25 System.out.println("=========选择排序==========");
26 // 外层循环 轮数
27 for (int i = 0; i < arr.length; i++) {
28 // 内存循环 选择次数
29 for (int j = i + 1; j < arr.length; j++) {
30 // if (arr[i] > arr[j]){ // 从小到大
31 if (arr[j] > arr[i]){ // 从大到小
32 int tmp = arr[i];
33 arr[i] = arr[j];
34 arr[j] = tmp;
35 }
36 }
37 }
38
39 // 循环输出便利的结果
40 for (int i = 0; i < arr.length; i++) {
41 System.out.print(arr[i] + "\t");
42 }
43
44 System.out.println();
45 System.out.println("=============二分查找===============");
46 int[] a1 = {9, 10, 12, 21, 30, 56, 70};
47 System.out.println(twoSearch(a1, 21));
48 System.out.println(twoSearch(a1, 56));
49 System.out.println(twoSearch(a1, 90));
50 }
51
52 // 二分查找
53 public static int twoSearch(int[] arr, int n){
54 // 定义左边和右边的位置
55 int left = 0;
56 int right = arr.length -1;
57 // 开始循环,拆半查询
58 while (left <= right){
59 // 取中间索引
60 int middle = (left + right) / 2;
61 // 判断当前位置元素和要查找的元素大小情况
62 if (n > arr[middle]){
63 // 往右边找 左边位置 = 中间索引 + 1
64 left = middle + 1;
65 }else if (n < arr[middle]){
66 // 往左边找 右边位置 = 中间索引 - 1
67 right = middle -1;
68 }else {
69 return middle;
70 }
71 }
72 return -1;// 没有该元素
73 }