选择排序JAVA实现以及优化思考

选择排序思想

数组长度 n = nums.length
第一次从0开始找到数组最小值与nums[0]交换
第二次从1开始找到最小值与nums[1]交换
.
.
.
第n-2次 把最小值与nums[n-2]交换

package com.Gordon;
public class SelectionSort {
    public static void main(String args[]){
        int[] arr = {0,5,2,3,4,12,52,14,1,99};
        //Print.arr(arr);
        int minPOS=0;
        for(int i =0 ;i<arr.length-1;i++){
            for (int j = i+1; j < arr.length ; j++) {
                if (arr[j] < arr[minPOS]) {
                    minPOS = j;
                    //可写成 minPOS = arr[j] < arr[minPOS]?j:minPOS              }
            }
            Swap.arr(arr,i,minPOS);
            //System.out.print(minPOS+"x");
            minPOS=i+1;
        }
        System.out.println("after sort");
        Print.arr(arr);
    }
}
Print.arr 和 Swap.arr是自己提前写好的打印数组和交换数组两个值

注意点:
外层循环可以少一次 因为最后一个数已经与倒数第二个数比较过;
思考优化:我们每一次循环可以找到最小值 是不是可以顺便把最大值找到?然后放在最后?
这样的话循环次数就是n/2
选择排序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值