数据结构(九):简单选择排序

作者: 聪明的奇瑞 | 来源:发表于2018-02-27 13:43 被阅读29次
  • 通过 n-i 次元素之间的比较,从 n-i+1 个元素中选出值最小的元素,和第 i 个元素交换 (从数组中选出最小值元素与最左元素进行交换位置)

简单选择排序例子

  • 举例:

    • 假设数组如下
    5 2 8 4 9 1
    • 第一趟排序:比较 { 5 2 8 4 9 1 },1 最小,1 和 5 互换位置
    1 2 8 4 9 5
    • 第二趟排序:比较 { 2 8 4 9 5 },2 最小,已在最后一位,位置不变

    • 第三趟排序:比较 { 8 4 9 5 },4 最小,4 和 8 互换位置

    1 2 4 8 9 5
    • 第四趟排序:.....
    1 2 4 5 9 8
    • 第五趟排序:.....
    1 2 4 5 8 9

简单选择排序代码

int[] arr = new int[]{1, 3, 6, 4, 7, 8, 5, 10, 9};
// 简单选择排序
for(int i = 0; i < arr.length - 1; i++) {
    int k = i;
    for(int j = k + 1; j < arr.length; j++){
        if(arr[j] < arr[k]){
            k = j;      //记下目前找到的最小值所在的位置
        }
    }
    // 移动最小的元素至最左边
    if(i != k){
        int temp = arr[i];
        arr[i] = arr[k];
        arr[k] = temp;
    }
}

简单选择排序时间的性能

  • 简单选择排序的比较次数与序列的初始排序无关
  • 假设待排序的序列有 N 个元素,则比较次数永远都是 N (N - 1) / 2
  • 而移动次数与序列的初始排序有关,当序列正序时,移动次数最少,为 0。当序列反序时,移动次数最多,为3N (N - 1) / 2
  • 简单排序综合的时间复杂度为 O(n²),综合来说优于冒泡排序

相关文章

  • 数据结构(九):简单选择排序

    通过 n-i 次元素之间的比较,从 n-i+1 个元素中选出值最小的元素,和第 i 个元素交换 (从数组中选出最小...

  • 2019-07-16

    数据结构排序 单链表上的简单选择排序 判断一个堆是不是小顶堆

  • 九种排序算法(重要!!)

    分类:(九种排序算法) 1、插入排序:直接插入排序、二分插入排序、希尔排序; 2、选择排序:简单选择排序、堆排序 ...

  • 数据结构(选择排序-简单选择、堆排序)

    选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序记录序列的最后,直到全部排完为止...

  • 基础算法|简单选择排序

    简单选择排序是一种排序算法,指在简单选择排序过程中,所需移动记录的次数比较少。简单选择排序是不稳定排序。 简单选择...

  • 选择排序-c语言描述

    选择排序分简单选择排序与堆排序两种,先介绍简单选择排序。1.简单选择排序在未排序的序列中找到最小(大)元素,存放到...

  • 常用排序算法(Python实现), 持续更新中

    一、非线性时间比较类排序 交换排序冒泡排序快速排序 插入排序简单插入排序希尔排序 选择排序简单选择排序堆排序 归并...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

  • 算法复习-选择类排序(1)-简单选择排序

    简单选择排序 选择类排序的主要动作是“选择”,简单选择排序采用最简单的选择方式,从头至尾顺序扫描序列,找出最小的一...

  • Java数据结构和算法(九)——高级排序

    在Java数据结构和算法(三)——冒泡、选择、插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示...

网友评论

    本文标题:数据结构(九):简单选择排序

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