Java之选择排序法

选择排序法:

	使用0角标对应的元素和后面角标对应的元素依次比较,第一次比较完毕,最小值出现在最小索引处!
		比较的次数:数组长度-1次
public class SelectSortDemo {
    public static void main(String[] args) {

        //已知数组
        int[] arr = {24,69,87,56,13} ;
        System.out.println("选择排序前:");
        printArray(arr) ;

        /*System.out.println("第一次比较后:") ;
        //第一次比较
        int x = 0 ;
        //遍历数组中后面的所有元素
        for(int y = x+1;y<arr.length ;y++){
            //将arr[y] 后面的元素取出来
            //判断
            if(arr[y] < arr[x]){  //当后面元素比较前面元素小,后面的元素放前放
                //中间变量
                int temp = arr[y] ;
                arr[y] = arr[x] ;
                arr[x] = temp ;
            }
        }
        printArray(arr) ;
        System.out.println("--------------------------------------------------------") ;

        //第二比较
        System.out.println("第二次比较后:") ;
        x = 1 ;
        for(int y = x + 1; y< arr.length ; y++){
            //后面元素比较前面小,往前放
            if(arr[y] < arr[x]){
                int temp = arr[y] ;
                arr[y] = arr[x] ;
                arr[x] = temp ;
            }
        }
        printArray(arr) ;

        System.out.println("--------------------------------") ;
        //第三次比较
        System.out.println("第三次比较后: ") ;
        x = 2 ;
        for(int y = x + 1; y < arr.length ; y ++){
            if(arr[y] < arr[x]){
                int temp = arr[y] ;
                arr[y] = arr[x] ;
                arr[x] = temp ;
            }
        }
        printArray(arr) ;


        System.out.println("--------------------------------") ;
        //第四次比较
        System.out.println("第四次比较后: ") ;
        x = 3 ;
        for(int y = x + 1; y < arr.length ; y ++){
            if(arr[y] < arr[x]){
                int temp = arr[y] ;
                arr[y] = arr[x] ;
                arr[x] = temp ;
            }
        }
        printArray(arr) ;*/

        System.out.println("--------------------------------------") ;
        System.out.println("排序后:");
        //优化:上面的代码冗余度非常高,循环了四次---比较次数:数组长度-1次
        for(int x = 0 ; x < arr.length-1;x++){
            //里面元素比较
            for(int y = x +1; y< arr.length ; y ++){
                //后面元素比较前面元素小,小的往前放
                if(arr[y] < arr[x]){
                    int temp = arr[y] ;
                    arr[y] = arr[x] ;
                    arr[x] = temp ;
                }
            }
        }

        printArray(arr) ;

        System.out.println("---------------------------------------------------") ;
        int[] myArray = selectSort(arr) ;
        //System.out.println(myArray) ;//地址值没有意义
        //要么第三方提供jdk提供的Arrays工具类:将任何的数组转换成String ["元素1", "元素2", ]---toString()
        String str = Arrays.toString(myArray);
        System.out.println(str);
    }
    //定义选择排序的方法
    public static  int[] selectSort(int[] array){

        //优化:上面的代码冗余度非常高,循环了四次---比较次数:数组长度-1次
        for(int x = 0 ; x < array.length-1;x++){
            //里面元素比较
            for(int y = x +1; y< array.length ; y ++){
                //后面元素比较前面元素小,小的往前放
                if(array[y] < array[x]){
                    int temp = array[y] ;
                    array[y] = array[x] ;
                    array[x] = temp ;
                }
            }
        }
        return  array ;
    }


    public static void printArray(int[] array){
        System.out.print("[") ;
        for(int x = 0 ;x < array.length ; x++){
            if(x ==array.length-1){
                System.out.println(array[x]+"]");
            }else{
                System.out.print(array[x]+", ");
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小周不要掉头发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值