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;
    }
复制代码

运行结果为

相关文章
相关标签/搜索