冒泡排序、选择排序、二分查找

 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     }

 

posted @ 2024-01-23 20:09  小※兽  阅读(11)  评论(0)    收藏  举报