java选择排序

1、算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。

例如:{55,27,25,44,22}

初始:{55,27,25,44,22}

第一次:先将数组中第一个55数作为一个整体,然后从{27,25,44,22}剩下的数中找出最小的  22,最后与55交换位置。

          得到:{22,27,25,44,55}

第二次:将数组中的第二个27数作为一个整体,将它之后的{25,44,55}这些数中找出最小的  25,最后与27交换位置。

         得到:{22,25,27,44,55}

以此类推

代码:

import java.util.Arrays;

public class SelectSort {
    public static void main(String[] args) {
        int arr[]={5,1,2,8,55,45};

        for (int i=0;i<arr.length-1;i++){
             int min=arr[i];//假定最小值是第一个
             int minindex=i;
             for (int j=i+1;j<arr.length;j++){
                 if(min>arr[j]){//说明假定的最小值不是最小值
                     min=arr[j];//重置最小值
                     minindex=j;//重置最小值的索引
                 }
             }
             //如果最小值就是一开始定的,即不用换位置,如果最小值发生了变化,就将最小值放到前面
             if (minindex!=i){
                 arr[minindex]=arr[i];//先把原本假定的最小值换到真正的最小值位置上
                 arr[i]=min;//然后把找到的真正的最小值换到原本假定的最小值的位置上
             }

            System.out.println("第"+(i+1)+"轮后");
            System.out.println(Arrays.toString(arr));

        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值