排序算法-选择排序-java实现

简单选择排序

1.基本思路:
(1).第一轮假定第一个数字是最大或者最小值,让它和后面的数字逐一比较,由此确定出最大值和最小值,并让其归为数组的第一位,(也就是和假定值交换位置)。
(2).第二轮就要从下一个数字开始 以此类推

2.选择排序实现过程演示:
下面以数列{20,40,30,10,60,50}为例,演示它的选择排序过程(如下图)。
在这里插入图片描述

排序流程第1趟: i=0。找出a[1…5]中的最小值a[3]=10,然后将a[0]和a[3]互换。 数列变化: 20,40,30,10,60,50 – > 10,40,30,20,60,50
第2趟: i=1。找出a[2…5]中的最小值a[3]=20,然后将a[1]和a[3]互换。
数列变化: 10,40,30,20,60,50 – > 10,20,30,40,60,50
第3趟: i=2。找出a[3…5]中的最小值,由于该最小值大于a[2],该趟不做任何处理。
第4趟: i=3。找出a[4…5]中的最小值,由于该最小值大于a[3],该趟不做任何处理
。第5趟: i=4。交换a[4]和a[5]的数据。 数列变化: 10,20,30,40,60,50 – > 10,20,30,40,50,60

代码实现:

public class selectSort {
    public static void main(String[] args) {

        /*简单选择排序: 1.第一轮从一个数字对后面数字逐一比较 结束之后 最小或最大的数据已经确定
                   2.第二轮就要从下一个数字开始 以此类推
                   3.外循环依旧确定轮数 执行n-1次
         */
        int[] str = {5, 1, 3, 2, 4};

        //外循环
        for (int i = 0; i < str.length - 1; i++) {
            //内循环 第一轮从0索引对后面数字逐一比较结束之后 最小的数据已经确定 第二轮就要从下一个索引开始
              //+i是因为下一轮要从下一个数字开始比较了
            for (int j = i+1; j < str.length; j++) {
                if (str[i] < str[j]) {   //i一直和它后面的j比较 i受下一轮控制 而j是比较一次往后走一次
                    int temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                }
            }
        }
        PrintStr(str);
    }
    private static void PrintStr(int[] str) {
        for (int i = 0; i < str.length; i++) {
            System.out.print(str[i]+" ");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值