选择排序-----java实现

前言

选择排序即每一次都从参与比较的数据中找出最小值,然后用最小值和参与比较的这堆最前面的元素进行交换。即每一次交换都可以把剩下的数据里面最小的那一个放到最左边。
每一次的交换都具有意义(不像冒泡排序只要大于或者小于就交换),效率相对冒泡排序较高。


解释见代码:

package com.zjiedonl.javase.array;
/*
选择排序
 */
public class SelectSort {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {1,5,2,78,4};
        //找出每一次循环的最小值,通过下标
        //如果不是第一个元素最小就交换位置
        for (int i = 0; i < arr.length-1; i++) {
            //每一次循环最左边的就是i,只要前length-1个最小输出后,最后就是一个是最大的
            //因为每一次循环就可以找到一个最小的,所以之后就可以不用管前面,所以j的下标不能从0开始
            int min = i;//min下标就是每次循环最左边的,先把他的下标代表的数看做最小值进行比较,i+1就是第二个数
            for (int j = i+1; j < arr.length; j++) {
                if(arr[j]<arr[min]){
                    min=j;//如果后面的数比前面的小,交换下标
                }
            }
            //如果min的值发生变化则交换,也可以直接交换不判断
            if(i!=min){
                int temp;//需要一个中间值进行暂时保存数据
                temp=arr[i];
                arr[i]=arr[min];
                arr[min]=temp;
            }
        }
        //循环打印输出
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值