java选择排序算法详细步骤分解

文章详细介绍了选择排序算法的思路,以升序排序为例,通过多次遍历数组并交换最小值的方式逐步实现排序。代码示例展示了完整的排序过程,包括四次排序阶段,每次都找到剩余部分的最小值并将其移至已排序部分的末尾。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   选择排序算法的思路(升序排序):
  (1)将第一位看成最小值,遍历找出最小值和第一位进行交换
  (2)再将第二位看成最小值,遍历找出次小值和第二位进行交换
  重复以上步骤直到整个数组有序。
//选择排序算法
    public  static  void  SolutionSort(){
        int array[] = {20, 25, 12, 58, 32};

        for (int i = 0; i < array.length; i++) {//表示需要排序的次数
            for (int j = 1; j < array.length; j++) {//表示每次排序需要比较的次数
                int k = j-1;//设置一个变量k记录最小值的下标
                if (array[j-1] > array[j ]) {
                    k = j ;
                }
                //如果找到的最小值小于默认最小值,将找到的最小值与默认最小值交换
                if (array[k] < array[j-1]) {
                    int temp = array[k];
                    array[k] = array[j-1];
                    array[j-1] = temp;
                }
            }

        }
        System.out.println(Arrays.toString(array));


    }

    //选择排序算法分解
    public static void SolutionSortPart() {
        int array[] = {20, 25, 12, 58, 32};

        System.out.println("第一次排序");
        //默认第一个元素为最小值
        //从第2个元素(下标1)开始,依次向后寻找最小值,找到则与默认最小值交换
        for (int i = 1; i < array.length-1; i++) {//比较3次
            int k = i;//设置一个变量k记录最小值的下标
            if (array[i] > array[i + 1]) {
                k = i + 1;
            }
            //如果找到的最小值小于默认最小值,将找到的最小值与默认最小值交换
            if (array[k] < array[0]) {
                int temp = array[k];
                array[k] = array[0];
                array[0] = temp;
            }
        }

        System.out.println(Arrays.toString(array));

        System.out.println("第二次排序");
        //默认第二个元素最小,从第三个依次向后比较
        for (int i = 2; i < array.length-1; i++) {//比较2次
            int k = i;//设置一个变量k记录最小值的下标
            if (array[i] > array[i + 1]) {
                k = i + 1;
            }
            //如果找到的最小值小于默认最小值,将找到的最小值与默认最小值交换
            if (array[k] < array[1]) {
                int temp = array[k];
                array[k] = array[1];
                array[1] = temp;
            }

        }
        System.out.println(Arrays.toString(array));

        System.out.println("第三次排序");
        //默认第三个元素最小,从第四个依次向后比较
        for (int i = 3; i < array.length-1; i++) {//比较1次
            int k = i;//设置一个变量k记录最小值的下标
            if (array[i] > array[i + 1]) {
                k = i + 1;
            }
            //如果找到的最小值小于默认最小值,将找到的最小值与默认最小值交换
            if (array[k] < array[2]) {
                int temp = array[k];
                array[k] = array[2];
                array[2] = temp;
            }

            System.out.println(Arrays.toString(array));
        }


        System.out.println("第四次排序");
        int i=4;
        int k=i;
        if (array[k] < array[i-1]) {//比较第四个元素与第五个元素,若第四个小则交换
            int temp = array[k];
            array[k] = array[i-1];
            array[i-1] = temp;
        }

        System.out.println(Arrays.toString(array));
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值