数据结构与算法 — 选择排序算法

算法描述

选择排序的基本思想是:如果共有n个元素,那么第一轮的时候就再n个元素中找到最小的元素,如果它不是排在第一个,就让它与第一个元素交换位置。第二轮再在除去最前面的元素(也就是上一轮找到的最小元素)中,再找到最小的元素,使它的位置确定在当前这些元素的最前面。以此类推。。。每一轮都可以确定一个元素的位置,只需要进行n-1次循环后,就可以完成排序。
例:原始数据为 15,11,25,78,29,8 需要从小到大排序。
在这里插入图片描述
第一轮,在6个元素中找到最小值,然后与第一个元素交换位置。第一个8确定位置。
在这里插入图片描述
第二轮,在剩下的5个元素中找到最小的,然后将它换到目前相比较的元素中的最前面。确定11的位置。
在这里插入图片描述
第三轮,在剩下的4个中找到最小的,换到此时的最前面,也就是25所在的位置。确定15的位置。
在这里插入图片描述
第四轮,在剩下的3个中找出最小的,换到此时的最前面,确定25的位置。
在这里插入图片描述
第5轮,在剩下的2个中找到小的,使它的位置在前面。确定29,剩下一个78也自动确定。排序完成。
在这里插入图片描述
可以发现,循环的次数为元素个数-1,每一轮中,需要把最小元素换到的位置为轮数,第一轮时,确定的位置是第一个数,第二轮是第二个数,以此类推。。。

代码实现

int array[] = {15, 11,25,78, 29,8};
        for (int i = 0; i < array.length; i++) {
            int index = i;
            int min = array[i]; //先假定第一个数为最小数
            for (int j = i + 1; j < array.length; j++) {
                //如果发现有元素比我们的假定最小数还小,就让此元素成为新的假定最小数。
                if (min > array[j]) {
                    min = array[j];
                    index = j;
                }
            }
            //将我们找到的最小数与最前面的元素交换位置。
            int temp = array[index];
            array[index] = array[i];
            array[i] = temp;
        }
        System.out.println(Arrays.toString(array));

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值