Java选择排序实现

选择排序
```java


public class ChoiceSort {


    public static void main(String[] args) {
        int [] arr = {1, 77, 21, 8, -1, 9, -1, -1};
        sort(arr); // 调用方法
        listArr(arr);// 排序后遍历
    }

    // 排序方法, 先寻找最小的值和该值的索引,之后将最小值放在数组第一位,第一位的值与最小值原来位置交换,
    private static void sort(int [] arr){

        // 定义初始索引
        int min_dex = 0;
        int min = 0;

        // 只需要排序数组长度减1次, 每次排序, 将已经找到的最小值去除, 只对后面除最小值后面的数据进行排序
        for (int i = 0; i < arr.length - 1; i++) {

            // 初始索引
            min_dex = i;
            // 假设初始值
            min = arr[min_dex];

            // 每次寻找在原来的数组基础上后移一个索引, 因为假设了i位值为目前的最小值
            for (int j = i + 1; j < arr.length; j++) {
                // 寻找最小值和最小索引
                if (min > arr[j]) {
                    min = arr[j];
                    min_dex = j;
                }

            }
            // 初始所有没有改变则不需要执行交换
            if (min_dex != i){
                arr[min_dex] = arr[i];
                arr[i] = min;
            }
        }



    }

    // 遍历数组
    private static void listArr(int [] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值