选择排序,冒泡排序,二分查找法

public class Main {

public static void main(String[] args) {

    int[] ints = {1,2,3,4,5,6,7};

    maopao(ints);
    System.out.println(halfSearch(ints, 6));


}

// 选择排序:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
private static void select(int[] ints) {
    for (int i = 0; i < ints.length - 1; i++) {
        for (int j = i + 1; j < ints.length; j++) {
            if (ints[i] > ints[j]) {
                int temp = ints[i];
                ints[i] = ints[j];
                ints[j] = temp;
            }
        }
    }
}

private static void print(int[] ints) {
    for (int anInt : ints) {
        System.out.println(anInt);
    }
}


// 冒泡排序: 相邻元素两两比较,因此最后一项不用比较,大的往后放。第一次完毕,最大值在最后面(最后一位索引)
private static void maopao(int[] ints) {
    for (int i = 0; i < ints.length - 1; i++) {

        for (int j = 0; j < ints.length - 1 - i; j++) {
            if (ints[j] > ints[j + 1]) {
                int temp = ints[j];
                ints[j] = ints[j + 1];
                ints[j + 1] = temp;
            }
        }
    }
}

// 二分查找法: 数组一定是有序的

private static int halfSearch(int[] ints, int value) {
    int max = ints.length - 1;
    int min = 0;
    int mid = (max + min) / 2;


    while (ints[mid] != value) {
        if (value > ints[mid]) {
            min = mid;
        } else if (value < ints[mid]) {
            max = mid;
        }
        mid = (max + min) / 2;
    }

    return mid;
}

}

你可能感兴趣的:(选择排序,冒泡排序,二分查找法)