Java_之排序

冒泡排序

分析數組

先定義一個數組:int arr[]={11,66,77,2,1};bash

第一次:arr[0]與arr[1],arr[1]與arr[2],arr[2]與arr[3],arr[3]與arr[4];第一輪比較4次ui

第二次:arr[1]與arr[2],arr[2]與arr[3],arr[3]與arr[4]第二輪比較3次spa

第三次:arr[2]與arr[3],arr[3]與arr[4]第三輪比較2次code

第四次:arr[3]與arr[4]第四輪比較了1次cdn

接下來具體用代碼實現升序;blog

public class Sort {
    public static void main(String[] args) {
        //定義一個數組
        int arr[] = {11, 66, 77, 2, 1};
        //定義三個數轉化方法
        sort(arr);
        //定義foreach打印方法
        print(arr);
    }

    public static void sort(int arr[]) {
        //限制外層循環的次數
        for (int i = 0; i < arr.length - 1; i++) {
            //內層循環次數
            for (int j = 0; j < arr.length - i - 1; j++) {
                //核心比較:前一個數直接和後一個數比較
                if (arr[j] > arr[j + 1]) {
                    swap(arr, i, j);
                }
            }
        }
    }

    public static void swap(int arr[], int i, int j) {
        int temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
    }

    public static void print(int arr[]) {
        for (int a : arr) {
           System.out.print(a+" ");
        }
    }
}
複製代碼

運行結果排序

選擇排序

分析:索引

定義一個數組 int [] arr={99,77,88,55,46};get

第一次:arr[0],分別和arr[1-4]比較,比較4次

第二次:arr[1],分別和arr[2-4]比較,比較3次

第三次:arr[2],分別和arr[3-4]比較,比較2次

第四次:arr[3],分別和arr[4]比較,比較1次 用代碼去實現升序:

public class sort {
    public static void main(String[] args) {
        int[] arr = {99, 77, 88, 55, 46};
        chooseSort(arr);
        choosePrint(arr);
    }

    public static void chooseSort(int arr[]) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length ; j++) {
                if (arr[i] > arr[j]) {
                    swap(arr, i, j);
                }
            }
        }
    }

    public static void swap(int arr[], int i, int j) {
        int temp = arr[j];
        arr[j] = arr[i];
        arr[i] = temp;
    }

    public static void choosePrint(int arr[]) {
        for (int a : arr) {
            System.out.print(a + " ");
        }
    }
}
複製代碼

運行結果:

二分查找

public static void main(String[] args) {
        int arr[] = {11, 22, 33, 44, 55, 66, 77};
        System.out.println(getIndex(arr, 33));
        
    }

    public static int getIndex(int arr[] ,int value) {
        //定義數組的最大值,最小值,和中間值
        int min=0;
        int max=arr.length-1;
        int mid=(min+max)/2;
        while (arr[mid]!=value){
            if (arr[mid]>value){
                max=mid-1;
            }else if (arr[mid]<value){
                min=mid+1;
            }
            //從新對中間的值進行賦值
            mid=(max+min)/2;
        }
        //作健壯性判斷若是min>max就不存在
        if (min>max){
            return -1;
        }
        //最後返回的是索引值
        return mid;
    }
複製代碼

運行結果爲

相關文章
相關標籤/搜索