选择排序 - 算法

一、选择排序概念

  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;
    }

}
点赞