zoukankan      html  css  js  c++  java
  • 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]
    
  • 相关阅读:
    kettle的使用(ETL,数据仓库技术)
    最近工作用到压缩,写一个zip压缩工具类
    JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常
    JAVA反射机制
    guava的使用
    web项目中无法开启或404
    关于request.getServletContext()方法报错的问题
    使用U盘给笔记本重做系统
    sed速查手册
    awk速查手册
  • 原文地址:https://www.cnblogs.com/shiguangmanbu2016/p/5932816.html
Copyright © 2011-2022 走看看