选择排序

本文介绍了一种简单直观的排序算法——选择排序,并提供了详细的Java实现代码。选择排序的时间复杂度为O(N^2),适用于小规模数据集。文章通过一个具体的示例展示了排序过程,并对比了选择排序与其他排序算法的不同之处。
package foo;

import java.util.Arrays;

public class Main {
    
    public static void selectionSort(int[] a, int len) {
        int in, out, min;
        for (out=0;out<len-1;++out) {
            min = out;
            for (in=out+1;in<len;++in) {
                if(a[in]<a[min]) {
                    min = in;
                }
            }
            swap(a, out, min);
        }
    }
    
    public static void swap(int[] a, int index1, int index2) {
        int temp = a[index1];
        a[index1] = a[index2];
        a[index2] = temp;
    }
    
    public static void main(String[] args) throws Exception {
        int[] a = new int[]{3,2,1,5,4};
        selectionSort(a, a.length);
        System.out.println(Arrays.toString(a));
    }
}

选择排序的效率:O(N*N),比较N*N/2,交换<N; 选择排序与冒泡排序比较,比较次数没有明显改变,但交换次数明显减少了很多

转载于:https://www.cnblogs.com/qrlozte/p/3793251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值