ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用java实现选择排序

2022-02-24 09:34:10  阅读:170  来源: 互联网

标签:arr java 33 56 选择 数组 排序 78


选择排序

从数组中找一个最小的值或者最大值,依次和后面的元素进行比较,第一轮比较把数组中第一小的数放到数组索引的第一位,第二轮把数组中第二小的数放在数组的第二位,比较的轮数是数组的长度-1,依次类推,直到排序完成为止.

package com.swlz.code;
/*
 * @Author liuzheng
 * @Date 2021/10/18 22:24
 * @Description 选择排序
 * @Since version-1.0
 */

import java.io.Serializable;
import java.util.Arrays;

public class SelectSort implements Serializable{
    public static void main(String[] args) {
        //-1,33,78,56,8   -1,8,33,78,56   .....
        int[] arr={33,-1,78,56,8};
//        System.out.println(arr.length);
        selectsort(arr);

    }

    //从低到高 升序  第一轮是把数组中第一小的找到,第二轮数把数组中第二小的找到,依次类推.直到排序完成为止
    public static void selectsort(int[] arr){//外循环控制轮数,内循环控制交换次数
        //使用逐步推导的方法
        //第一轮33,-1,78,56,8  -> -1,33,78,56,8 比较的总轮数
        for (int i = 0; i <arr.length-1; i++) {
            //定义变量
            int min = arr[i];//假定的最小数为数组中的第一个元素
            int minindex = i;//假定最小数的索引
            //第一轮 交换的次数
            for (int j = i + 1; j < arr.length; j++) {
            //第一轮,如果假定的数不是数组中最小的数  min是数组中的第一位数默认为最小数  arr[j]数组中的第二位数
                //如果数组中第一位数大于数组的第二位数,就把第二数赋值给第一位数,依次,循环往复,直到把最小的数放到第一位为止
                if (min > arr[j]) {//说明假定的最小值并不是最小的,后面还有比它小的值   如果要从大到小排序改为<即可
                    min = arr[j];//重置min(最小值)
                    minindex = j;//重置minindex(最小值的索引是这个)
                }
            }//将最小值放在arr[0]   即交换(找到最小值做交换)即:33,-1,78,56,8
            // 第一轮后:8,-1,78,56,33(找到最小值8和它交换了)第一轮排序之后
            //第一轮结束之后,就把最小值放到数组的第一位,然后第一轮就是后面几个数进行比较,
            // 就把假定最小是是arr[1]第二位数,依次进行比较,依次类推,第二轮的最小的数就是第二位数,
            //第一轮后将最小值放在第一位,即交换,第二轮就将第二小的数放在第二位,即交换
            if (minindex != i) {//minindex=0; 如果最小值的索引不等于i
                //将最小值放在arr[i] 即交换
                arr[minindex] = arr[i];//最小值的索引  把最小值放到第一个位置arr[0]  arr[0]
                arr[i] = min;//arr[0]=min 第一轮  把最小值放在第一位  第一轮 把第二小的值放在第二位
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

 

标签:arr,java,33,56,选择,数组,排序,78
来源: https://www.cnblogs.com/lz-km/p/15930231.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有