冒泡、选择、折半查找

1、冒泡、选择排序和折半查找

一、冒泡排序



public class MaoPao_PaiXu {
    public static void main(String[] args) {
        int []array=new int[10];
        for(int i=0;i<array.length;i++){
            array[i]=(int)(Math.random()*10);
        }
        System.out.println("排序前:"+Arrays.toString(array));
        for (int i = 0; i <array.length-1 ; i++) {
            for (int j = 0; j <array.length-i-1 ; j++) {
                int temp=array[0];
                if(array[j]>array[j+1]){
                     temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }

        }
        System.out.println("排序后:"+Arrays.toString(array));
    }

}


冒泡、选择、折半查找

二、选择排序




public class XuanZePaiXu {
    public static void main(String[] args) {
        int []array1=new int[10];
        for (int i = 0; i <array1.length ; i++) {
            array1[i]=(int)(Math.random()*10);
        }
        System.out.println("排序前:"+ Arrays.toString(array1));
        for (int i = 0; i <array1.length ; i++) {
                int Indexmin=i;
            for (int j = 0; j <array1.length ; j++) {
                if(array1[j]>array1[Indexmin]){
                    Indexmin=j;
                }
                int temp=array1[Indexmin];
                array1[Indexmin]=array1[i];
                array1[i]=temp;
            }
        }
        System.out.println("排序后:"+Arrays.toString(array1));
    }

}


冒泡、选择、折半查找

三、折半排序查找




public class LianXi {
    public static void main(String[] args) {
        int[] ints = {1, 3, 5, 7, 9, 11, 14};
        find(ints, 3);
        find(ints, 14);
        find(ints, 6);
    }

    /**
     * 如果找不到,那么求应该插入的位置
     */
    private static void find(int[] ints, int i) {
        // int index = Arrays.binarySearch(ints, i);
        // System.out.println(index);//找不到返回负数
        int start = 0;
        int end = ints.length - 1;

        while (true) {
            int mid = (start + end) / 2; // 注意中间是两者之和的一半
            if (i == ints[mid]) {
                System.out.println("index = " + mid);// 正好找到打印角标,停止;
                break;
            } else {
                if (i < ints[mid]) {// 小于中间值,那么end变成中间往中间往左一位
                    end = mid - 1;
                } else {// 大于则相反
                    start = mid + 1;
                }
            }
            // 交叉了-即找不到情况,说明start在0或者尾部或者在交叉时的前一位,那么得到应该插入位置;
            if (start > end) {
                // 找到了前面一个start,并确定在此即可;
                System.out.println("no find, will insert in :" + start);
                break;
            }

        }

    }
}


冒泡、选择、折半查找

上一篇:array_udiff — 用回调函数比较数据来计算数组的差集


下一篇:JS数组方法