java基础面试题8--数组高级-选择排序


数组排序之选择排序:

* 选择排序基本思路:
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

这里写图片描述

package sort;

public class SelectSort {

    public static void selectSort(int [] arr){
//      外循环控制从数组第一个元素开始遍历,直到length-1(倒数第2)个元素
        for(int x=0; x<arr.length-1; x++){
            System.out.print("当前正在为第"+(x+1)+"个元素(从1开始)寻找最小值,");
//          内循环控制从x开始,把后面的最小的拉到arr[x]处来
            for(int y=x+1;y<arr.length;y++){
                if(arr[x]>arr[y]){
                    System.out.println("找到比"+arr[x]+"小的值"+arr[y]+",交换");
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
            System.out.println("第"+(x+1)+"个元素归位后的结果:");
            printArray(arr);
        }
    }

    public static void printArray(int [] arr){
        System.out.print("[");
        for(int x=0;x<arr.length;x++){
            if(x==arr.length-1){
                System.out.print(arr[x]+"]");
                System.out.println();
            }else{
                System.out.print(arr[x]+", ");
            }
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        int [] a = new int[]{10 ,9, 8, 7, 6, 5, 4, 3, 2, 1};
        System.out.print("开始比较");
        printArray(a);

        selectSort(a);
        System.out.print("结束比较");
        printArray(a);
    }

}


运行结果:

开始比较[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
当前正在为第1个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
找到比4小的值3,交换
找到比3小的值2,交换
找到比2小的值1,交换
第1个元素归位后的结果:
[1, 10, 9, 8, 7, 6, 5, 4, 3, 2]
当前正在为第2个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
找到比4小的值3,交换
找到比3小的值2,交换
第2个元素归位后的结果:
[1, 2, 10, 9, 8, 7, 6, 5, 4, 3]
当前正在为第3个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
找到比4小的值3,交换
第3个元素归位后的结果:
[1, 2, 3, 10, 9, 8, 7, 6, 5, 4]
当前正在为第4个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
第4个元素归位后的结果:
[1, 2, 3, 4, 10, 9, 8, 7, 6, 5]
当前正在为第5个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
第5个元素归位后的结果:
[1, 2, 3, 4, 5, 10, 9, 8, 7, 6]
当前正在为第6个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
第6个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 10, 9, 8, 7]
当前正在为第7个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
第7个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 7, 10, 9, 8]
当前正在为第8个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
第8个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 7, 8, 10, 9]
当前正在为第9个元素(从1开始)寻找最小值,找到比10小的值9,交换
第9个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
结束比较[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
原文地址:https://www.cnblogs.com/shiguangmanbu2016/p/5932816.html