选择排序

public class Select {
    public static void main(String[] args) {
        new Thread(()->{
            int[] arr=new Select().random();
            Selectsort(arr);
            System.out.println(Thread.currentThread().getName()+Arrays.toString(arr));
        },"a1").start();
        new Thread(()->{
            int[] arr=new Select().random();
            Selectsort(arr);
            System.out.println(Thread.currentThread().getName()+Arrays.toString(arr));
        },"a2").start();
    }
    static void Selectsort(int[] array){
        //从后往前
        for (int end=array.length-1;end>0;end--){
            //先初始化一个最大值的下标
            int maxindex=0;
            //循环遍历数组
            for (int begin=0;begin<=end;begin++){
                //如果小的话就把下标替换
                if(array[maxindex]<=array[begin]){
                    maxindex=begin;
                }
            }
            //然后把最大的与最后位换个地方继续下个循环
            int temp=array[maxindex];
            array[maxindex]=array[end];
            array[end]=temp;
            
        }
    }
     int[] random(){
        ArrayList<Integer> list = new ArrayList<>();
        Random random = new Random();
        for (int i=0;i<100;i++){
            list.add(random.nextInt(100));
        }
        System.out.println(list);
        int[] arr=list.stream().mapToInt(Integer::valueOf).toArray();
        return arr;
    }
}

将这些待排序的数组中的最大值调出来排到最后
选择排序和冒泡排序是时间复杂度都是O(n²) (因为都是双层for循环),但是选择排序比冒泡排序更优(可以通过测试排序大量数据测试)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值