java选择排序

本文解析了使用最小值交换法对数组进行排序的过程,通过遍历找到最小值并与其索引位置的元素交换,逐步提升数组的有序性。

原理:找出最小值的索引下标,然后将最小值的数和第一个数进行交换,然后再从剩余的数中再找最小值,和第二个数进行交换,依次往下进行。

import java.util.Arrays;

public class Demo7 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,5,3,4};
        for (int i = 0; i < arr.length; i++) {
            //声明一个变量,最小值的索引
            int minIndex = i;
            for (int j = i; j < arr.length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;//找到的最小值的索引
                }
            }
            //交换,把小的值交换到第一位
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        System.out.println(Arrays.toString(arr));
    }
}

 分析:

i = 0     0 < 4    minIndex = 0
            进入到内层循环
            *       j = 0  0 < 4  arr[0]  <  arr[0]    false     j++
            *       j = 1 1 < 4   arr[1]  <  arr[0]    false     j++
            *       j = 2 2 < 4   arr[2]  <  arr[0]    false     j++
            *       j = 3 3 < 4   arr[3]  <  arr[0]    false     j++
            *       j = 4 4 < 4   false   内层循环结束、i++
i = 1 1 < 4  minIndex = 1
           进入到内层循环
            *       j = 1 1 < 4   arr[1]  <  arr[1]    false    j++
            *       j = 2 2 < 4   arr[2]  <  arr[1]    true   minIndex = 2   j++
            *       j = 3 3 < 4   arr[3]  < arr[1]     false  j+=
            *       j = 4 4 < 4   false 内层循环结束、i++
            * */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值