常用排序算法2

选择排序:

public static void main(String[] args0) {
        int[] array = new int[] {3,2,5,7,1,8,0,12,39,200};
        for(int x : array) {
            System.out.print(x + "   ");
        }
        int[] resultArray = new int[array.length];
        //从array中找出最大的数据,放入resultArray的最后
        int maxPosition = 0;//最大元素在array中的下标
        int lastIndex = 0;
        for(int j=0;j<array.length;j++) {//需要选择length次最大值
            int max = 0;
            for(int i = 0;i<array.length;i++) {
                if(array[i] != -999 && max<array[i]) {
                    max = array[i];
                    maxPosition = i;
                }
            }
            array[maxPosition] = -999;//去除掉已经选过的最值
            resultArray[lastIndex] = max;
            lastIndex ++;
        }
        System.out.println();
        for(int x : resultArray) {
            System.out.print(x + "   ");
        }
    }

改良版:

public static void main(String[] args0) {
        int[] array = new int[] { 3, -4, 39, 2, 5, 7, 1, 8, 0, 12, 2 };
        for (int x : array) {
            System.out.print(x + "   ");
        }
        int minPosition = 0;// 最大元素在array中的下标
        int tmp = 0;
        for (int j = 0; j < array.length - 1; j++) {// 需要选择length-1次最大值
            minPosition = j;// 新一轮开始时,最小位置需要重新设置
            for (int i = j + 1; i < array.length; i++) {
                if (array[minPosition] > array[i]) {
                    minPosition = i;
                }
            }
            tmp = array[j];
            array[j] = array[minPosition];
            array[minPosition] = tmp;
        }
        System.out.println();
        for (int x : array) {
            System.out.print(x + "   ");
        }
    }

猜你喜欢

转载自blog.csdn.net/goJiaWei123/article/details/86595124