美文网首页
算法学习笔记 - 排序之选择排序

算法学习笔记 - 排序之选择排序

作者: 流着鼻血做时间管理 | 来源:发表于2018-07-25 22:48 被阅读0次

算法描述

  • 假设开始有一个有序列表,和一个无序列表。有序列表中有零个元素,无序列表中的元素个数等于待排序列表的总长。
  • 取无序列表中的最小值与无序列表中的第一个元素交换。再将无序列表第一个元素并入有序列表的最后一个元素。此时,有序列表长度加一,无序列表长度减一。
  • 依此类推,无序列表不断缩短,直至排序结束。
    这种方法叫做选择排序,因为它在不断地选择剩余元素中的最小者。
    (以上方法实现正序排序)

特点
  • 运行时间和输入无关。为了找出最小的元素而扫描一遍数组并不能为下一遍扫描提供什么信息。这个性质在某些情况下是缺点,因为使用选择排序时,一个已经有序的列表或是主键全部相等的列表和一个元素随机排列的列表所用的排序时间一样长。
  • 数据移动是最少的。每次交换都会改变两个列表元素的值,因此选择排序用了N次交换——交换次数和列表大小是线性关系。

算法实现

/**
 *  Java 实现正序排序 int 类型数组
 */
public class Selection {
    public static void sort(int[] a) {
        for (int i = 0; i < a.length; i++) {
            int min = i;
            for (int j = i+1; j < a.length; j++) {
                if (a[j] < a[min]) {
                    min = j;
                }
            }
            int temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        }
    }
}

过程模拟
i min 0 1 2 3 4 5
S O R T I T
0 4 S O R T >> I << T
1 1 I >> O << R T S T
2 2 I O >> R << T S T
3 4 I O R T >> S << T
4 4 I O R S >> T << T
5 5 I O R S T >> T <<
I O R S T T

相关文章

  • 算法学习笔记 - Alogrithm Fourth Editio

    算法学习笔记 - Alogrithm Fourth Edition 排序算法 选择排序(Selection) 如果...

  • 2020-04-30-排序算法

    冒泡排序 直接选择排序 插入排序 快速排序 参考 算法学习笔记17-经典排序算法八大排序算法稳定性分析

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • PHP常见排序算法学习

    题记: 常见的排序算法有:冒泡排序法,快速排序法,选择排序法,插入排序法,此处作为自己最近面试准备进行的学习笔记,...

  • 算法-选择排序

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

  • 数据结构与算法学习笔记之 适合大规模的数据排序

    数据结构与算法学习笔记之 适合大规模的数据排序 前言 在数据排序的算法中,不同数据规模应当使用合适的排序算法才能达...

  • 算法理解之排序-选择排序

    算法理解之排序-选择排序 选择排序是一种简单直观的排序算法, 以当前点为锚点, 向后依次进行比较所有未排序元素, ...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 3.1-选择排序-简单选择排序

    参考链接 选择排序:简单选择排序(Simple Selection Sort) 白话经典算法系列之四 直接选择排序...

网友评论

      本文标题:算法学习笔记 - 排序之选择排序

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