复习数据结构之选择排序

  • 选择排序是一种简单直观的排序算法,它的原理很简单,第一次比较后,选择最小的记录与第一个交换。接着不包括第一个记录进行比较,选择第二个最小的记录与第二个交换,以此类推。

下面,以例子的方式详细介绍一下选择排序:
假设有数组: 8 4 3 5 7
第一轮排序: [3] 4 8 5 7
第二轮排序: [3 4] 8 5 7
第三轮排序: [3 4 5] 8 7
第四轮排序: [3 4 5 7] 8
最后排序结果: 3 4 5 7 8

知道了原理 那么代码也很好写了:

public static void selectSort(long[] array){
        long minValue = 0;
        int minFlag = 0;
        for(int i = 0 ; i<array.length-1;i++){
            minValue = array[i];
            minFlag = i;
            for(int j = i+1;j<array.length;j++){
                if(minValue > array[j]){
                    minValue = array[j];
                    minFlag = j;
                }
            }
            if( minFlag != i){
                array[minFlag] = array[i];
                array[i] = minValue;
            }
        }
    }

测试:

public static void main(String[] args) {
        // TODO Auto-generated method stub

        long[] temp = new long[]{2,4,6,5,3,1};
        selectSort(temp);
        System.out.println("select sort:");
        for(int i = 0 ; i<temp.length;i++){
            System.out.print(temp[i]+" ");
        }
    }

输出结果:
这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值