当前位置 博文首页 > 用心编码:选择排序 - 算法

    用心编码:选择排序 - 算法

    作者:[db:作者] 时间:2021-09-07 13:30

    一、选择排序概念

    1. 何为选择排序?

    简单来说,选择排序就是每次都从数组中查询出最小的数据,放到数组的最前面,直到最后一个数据被排序完,真个数组就被排序。选择排序有点类似冒泡排序,冒泡排序遍历时,每次都是相邻两个元素进行比较,比较完后,将小的元素排到前面,比较次数比较多。选择排序是每次都全部比较,选择其中最小的元素放到最前面。

    1. 代码实现
    package com.daxiong.day4;
    
    // 选择排序
    public class SelectSort {
    
        public static void main(String[] args) {
            int[] data = {2,3,1,4,5,6,3,1,3};
            int[] newData = selectSort(data);
            for(int i = 0;i < newData.length;i++){
                System.out.print(newData[i] + " ");
            }
        }
    
        public static int[] selectSort(int[] data){
    
            /**
             * 小 --> 大
             * 从整个数组中挑选中最小值,放到第一中位置,
             * 再从剩下的 n - 1个中挑选出最小值放到第二中位置,以此类推
             * */
            /*int min = 0;
            int minIndex = 0;
            int len = data.length;
            for(int i = 0;i < len;i++){
                min = data[i];   // 将当前值设定为最小值
                minIndex = i;    // 当前索引为最小值索引
                for(int k = i;k < len;k++){
                    if(data[k] < min){
                        min = data[k];    // 如果内循环中比最小值小,则将此值设为最小值,此索引设为最小值索引
                        minIndex = k;     
                    }
                }
                data[minIndex] = data[i]; // 默认最小值与出现新的最小值交换  
                data[i] = min;
            }*/
    
            /**
             * 大 --> 小
             * 从整个数组中挑选中最大值,放到第一中位置,
             * 再从剩下的 n - 1个中挑选出最大值放到第二中位置,以此类推
             * */
            int max = 0;
            int maxIndex = 0;
            int len = data.length;
            for(int i = 0;i < len;i++){
                max = data[i];
                maxIndex = i;
                for(int k = i;k < len;k++){
                    if(data[k] > max){
                        max = data[k];
                        maxIndex = k;
                    }
                }
                data[maxIndex] = data[i];
                data[i] = max;
    
            }
    
            return data;
        }
    
    }
    
    cs
    下一篇:没有了