美文网首页
排序算法【选择排序】

排序算法【选择排序】

作者: 就在附近 | 来源:发表于2019-08-25 08:20 被阅读0次
选择排序

原理

选择排序是比较排序的一种,它是每次从待排序的数据中找出最小或最大的数据放到前面,直到待排序的数据个数为0,

假设数据5,2,6,5,7,1,8

1、找到最小的1,和第一个位5进行交换

2、在2,6,5,7,5,8中找最小的,2,2在第二位是第二最小,待比较的数据中没有比2小的,不进行交换

3、待比较交换数据6,5,7,5,8中找到最小的,5是第三位最小的,5和6进行交换得到1,2,5,6,7,5,8

4、以此类推最终结果1,2,5,5,6,7,8

时间复杂度:O(n²)

空间复杂度:O(1)

稳定性:不稳定,假如数据5,2,3,5,7,1,8,那么第一个5会和1进行交换,变成在第二个五的后面,所以是不稳定的

示例

import java.util.Random;

/**
 * 选择排序
 *
 **/
public class SelectSortMain {
    public static void main(String[] args) {
        int len = 10;
        int[] datas = new int[len];

        Random r = new Random(0);
        for(int i = 0; i < len;i++) {
            int d = r.nextInt(100);
            datas[i] = d;
        }
        long start = System.currentTimeMillis();
        selectSort(datas);
        long spend = System.currentTimeMillis() - start;
        System.out.println("******  spend " + spend);
        for (int data:
                datas) {
            System.out.print(data + ",");
        }
    }

    public static void selectSort(int[] datas){
        int len = datas.length;
        if(len == 0){
            return;
        }
        //排序趟数
        for (int i = 0; i < len; i++) {
            int minDataIdx = i;
            //寻找最小值
            for (int currIdx = i+1; currIdx < len; currIdx++){
                //交换
                if(datas[minDataIdx] > datas[currIdx]) {
                    minDataIdx = currIdx;
                }
            }
            if(minDataIdx != i) {
                int tmp = datas[minDataIdx];
                datas[minDataIdx] = datas[i];
                datas[i] = tmp;
            }

        }
    }
}

相关文章

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • PHP常用算法

    基于选择的排序算法 常见的基于选择的排序算法有:冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选在排序算...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

  • 基础排序算法总结

    排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快...

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

  • 《算法4》2.1 - 插入排序算法(Insertion Sort

    排序算法列表电梯: **选择排序算法:详见 Selection Sort ** 插入排序算法(Insertion ...

  • 排序算法

    排序算法 排序是最基本的算法之一,常见的排序算法有插入排序、希尔排序、选择排序、冒泡排序、堆排序、归并排序及快速排...

  • 面试算法知识梳理(12) - 二叉树算法第二部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 ...

网友评论

      本文标题:排序算法【选择排序】

      本文链接:https://www.haomeiwen.com/subject/ouczsctx.html