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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值