Java选择排序详解

选择排序(SelectionSort)

转自:神话丿小王子:Java中的经典算法之选择排序(SelectionSort)

简单选择排序的基本思想:
给定数组:int[] arr={里面n个数据};
第1趟排序,在待排序数据arr[1]-arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]-arr[n]中选出最小的数据,将它与r[2]交换;
以此类推,第i趟在待排序数据arr[i]-arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。
即在未排序列表中选择最小的放在已排序列表的最后一位。
举例:数组 int[] arr={5,2,8,4,9,1};


第一趟排序: 原始数据:5 2 8 4 9 1

最小数据1,把1放在首位,也就是1和5互换位置,

排序结果:1 2 8 4 9 5


第二趟排序:

第1以外的数据{2 8 4 9 5}进行比较,2最小,

排序结果:1 2 8 4 9 5


第三趟排序:

除1、2以外的数据{8 4 9 5}进行比较,4最小,8和4交换

排序结果:1 2 4 8 9 5


第四趟排序:

除第1、2、4以外的其他数据{8 9 5}进行比较,5最小,8和5交换

排序结果:1 2 4 5 9 8


第五趟排序:

除第1、2、4、5以外的其他数据{9 8}进行比较,8最小,8和9交换

排序结果:1 2 4 5 8 9


代码示例:

//选择排序
public class SelectionSort {
    public static void main(String[] args) {
        int[] arr={1,3,2,45,65,33,12};
        System.out.println("交换之前:");
        for(int num:arr){
            System.out.print(num+" ");
        }        
        //选择排序
     public static void selectionSort(int[] arr){

    for(int i=0;i<arr.length-1;i++){ 

        for(int j=i+1;j<arr.length;j++){

            if(arr[i]>arr[j]){

                int temp=arr[i];

                arr[i]=arr[j];

                arr[j]=temp;
            }
        }
    }
}
        System.out.println();
        System.out.println("交换后:");
        for(int num:arr){
            System.out.print(num+" ");
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值