美文网首页
简单选择排序

简单选择排序

作者: 亼珏 | 来源:发表于2020-09-08 12:22 被阅读0次

基本思想

      简单选择排序是通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。

简单选择排序算法

    void selectSort(int[] array) {
        int length = array.length;
        int min = 0;
        for (int i = 0; i < length - 1; i++) {
            // 将当前下标定义为最小值下标
            min = i;
            for (int j = i + 1; j < length; j++) {
                if (array[min] > array[j]) {
                    min = j;
                }
            }
            if (i != min) {
                swap(array, i, min);
            }
        }
    }

      假定待排序序列为{9,1,5,8,3,7,4,6,2},对i从0循环到7:

  • 当i=0时,array[i]=9,min=0,j=1到8,比较array[min]与array[j]的大小,当j=1时最小,所以min=1,最终交换array[1]与array[0]的值:PS:这里虽然比较了8次但只交换了数据一次
  • 当i=1时,array[i]=9,min=1,j=2到8,比较array[min]与array[j]的大小,当j=8时最小,所以min=8,最终交换array[8]与array[1]的值:


  • 之后的数据比较和交换完全雷同,最多经过8次交换即可完成排序工作。

优点:交换移动数据的次数非常少,节约了相应的时间

简单选择排序算法时间复杂度分析

      对于比较而言,无论最好还是最坏的情况下,比较的次数都是一样多的:第i趟排序需要进行n-i次关键字的比较,所以共需要比较(n-1)+(n-2)+(n-3)+······+1次,就是n(n-1)/2次比较;对于交换而言,最好情况下交换0次,最坏情况下交换n-1次。
      基于最终的时间复杂度是比较与交互次数的和,所以它的时间复杂度为O(n^2)

虽然简单选择排序与冒泡排序的时间复杂度均为O(n^2),但是简单选择排序在性能上还是略优于冒泡排序的。

相关文章

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

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

  • 选择排序-c语言描述

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

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

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

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

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

  • 给自己备份的排序代码

    交换排序 冒泡排序 快速排序 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序

  • GO语言实现 一 基本排序

    基本排序包括简单选择排序和插入排序,本文将就这两种排序进行 golang语言实现,并引出希尔排序 一.简单选择排序...

  • 排序算法

    常见排序算法及JAVA实现 简单选择排序(SelectSort) 选择排序思想很简单,对所有元素进行遍历,选出最小...

  • 排序法

    排序分 内部排序和外部排序 内部排序: 插入排序:{直接插入排序,希尔排序} 选择排序:{简单选择排序,堆排序} ...

  • 动画 | 什么是选择排序?

    简单选择排序属性 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序...

  • 七大排序算法总结

    题记: 直接插入排序(稳定)-->希尔排序 : 属于插入排序 简单选择排序(稳定)-->堆排序 :属于选择排序...

网友评论

      本文标题:简单选择排序

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