3--直接选择排序

思想:

对于一组无序数字,每次选出一个最大值,将最大值放在当前无序数组的最后。
选最大值的方法:定义一个最大值的下标,将初始最大值与当前无序数组中的数字依次比较,若遇到更大的值,最大值的下标改变,直到当前无序数组结束,将最大值与当前无序数组的最后一个元素交换位置,把最大值交换到后面。
具体实现:

  1. 遍历初始数组
  2. 定义一个最大值的下标
  3. 遍历当前无序数组,遇到比最大值大的元素,将最大值下标改为该元素下标
  4. 遍历完当前无序数组后,将当前无序数组最后一个元素与最大值交换位置,即将最大值交换到最后。

实例理解:

给定一组数字:9,2,5,7,3,8,3,6,1
在这里插入图片描述
代码实现:

package www.fanfan.com;

import java.util.Arrays;

/**
 * author:kelly_fanfan
 */
public class Code_选择排序 {
    public static void main(String[] args) {
        int[] array = {9,2,5,7,3,8,3,6,1};
        selectSort(array);
        System.out.println(Arrays.toString(array));
    }

    public static void selectSort(int[] array){
        //1,遍历原数组
        for (int i = 0; i < array.length;i++){
            //2,定义最大值的下标
            int max = 0;
            //3,遍历当前无序数组
            for (int j = 1;j < array.length-i;j++){
                if(array[j] >= array[max]){
                    max = j;
                }
            }
            //4,将当前无序数组中的最大数与最后一个元素的位置交换
            int t = array[array.length-1-i];
            array[array.length-1-i] = array[max];
            array[max] = t;
        }
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值