选择排序(清晰介绍)

一、实现思想:

例如有以下数字 {3 5 2 6 1 8}

类似以上数字,遍历一遍找个最小值放到0位置上,遍历的数据范围0~n-1

第二次遍历,遍历一遍找个最小值放到1位置上,遍历的数据范围是1~n-1

第三次遍历,遍历一遍找个最小值放到1位置上,遍历的数据范围是2~n-1

二、以下是代码部分

package class01;

import java.util.ArrayList;

public class insertSort {

    /**
     * 选择排序
     * 思想:
     * 3 5 2 6 1 8
     * 类似以上数字,遍历一遍找个最小值放到0位置上,数据范围0~n-1
     * 第二次遍历,遍历一边找个最小值放到1位置上,数据范围0~n-1
     * 以此类推
     * */
    //作为排序的值
    public static int [] num = new int[]{3,5,6,1,2,9,7,8};
    public static void main(String[] args) {
        //先把不用排序的情况洗掉
        if(num.length==0||num.length<2){
            return;
        }
        //使用选择排序进行排序
        for(int i=0 ;i <num.length ; i++){
            //存放最小值下标
            int netIndex = i;
             for(int j=i+1 ; j<num.length-1;j++){
                 //如果netindex位置的数字大于j位置上的数字,那么最小值的下标netIndex变为j
                 netIndex = num[netIndex]>num[j]?j:netIndex;
             }
             //重新排序数组,最小值下标netIndex,和下标i上的数字交换
             swap(num,i,netIndex);
        }
        for (int i:num){
            System.out.println(i+"\r");
        }
            
    }

    private static void swap(int[] num, int i, int netIndex) {
        //交换的时候采用中间值的方式做交换
        int tmp = num[i];
        num[i] = num[netIndex];
        num[netIndex] = tmp;
    }
}

小剧场:不积跬步无以至千里

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值