选择排序 - 算法

一、选择排序概念

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

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值