java_之排序--选择排序

本文深入讲解了选择排序算法的实现原理及步骤,通过具体代码示例展示了如何在Java中实现选择排序,包括初始化数组、比较并交换元素的过程,适合初学者理解和掌握。

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

今天心情稍微有点儿不好,没关系,写代码吧,转移注意力。

1.选择排序:

在一组待排序的数当中,去选择待排序的数当中,数最小的那个数,然后将整个数放在第一个位置,然后在剩下的待排序的数当中,去选择数值最小的数然后放到第二个数的位置,依次进行排序比较,直到倒数第二小的数和最大的数进行比较位置。实现的详细代码如下:

package 排序;

public class choice {
    /**
     * 选择排序算法,在未排序序列中找到最小的元素,存放到排序序列的起始位置
     *
     * 再从剩余未排序序列中继续寻找最小的元素,然后放到排序序列末尾
     *
     * 以此类推,直到所有元素均排序完毕。
     * @param args
     */
    public static void  choice(int[] numbers){
        int size=numbers.length;//数组长度
        int temp=0;//中间变量
        for(int i=0;i<size;i++){
            int k=i;//将i的数值赋值给k
            for(int j=size-1;j>i;j--){//将长度减一个数和最小值进行比较
                if(numbers[j]<numbers[k]){
                    k=j;//k一开始的值是0,当数值比较为较小时,把下标较大的哪个数值换到下标较小的数值的位置上
                }
            }
            //交换两个数
            temp=numbers[i];
            numbers[i]=numbers[k];
            numbers[k]=temp;
        }
    }

    public static void main(String[] args){
        int[] a={52,68,59,57,23,44};
        System.out.println("排序前");
        out(a);
        System.out.println("");
        System.out.println("选择排序后");
        choice(a);
        out(a);
    }

    public static void out(int[] a){
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+",");
        }
    }
}

可通过IDE的debug模式去熟悉排序算法的具体数据走向。

数据排序过程如下:

1.第一轮进行比较:

这里比较是第一个数依次和每个数进行比较,直到将数值最小的哪个数筛选出来位置

之后函数执行情况如下:

至此,最小的数被换到了数组下标最小的位置上:

在for循环体内部,进行第二轮比较,从除了第一个数的之外的所有数进行排序,

第二轮排序如下:

刚开始的排序顺序如上:

将44换到倒数第二的位置,至此,第二轮比较结束:

第三轮比较的数值交换位置至此第三轮结束。

选择排序遍历所有数先查到数值最小的数,然后,将其位置定下来,再进行接下来的排序,但是每次以遍历的时间复杂度会增高。

从i=2,也就是数组的第三个位置进行比较

将第三轮查到的最小数与上一轮所在的数组下标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值