简单选择排序

  • 概述

    • 顾名思义,这是一种选择排序。
    • 其步骤大致是,每一趟排序从待排记录中找到一个最小的关键字,放到已排序记录末尾,知道排序结束。
  • 算法详解
    • 首先,从待排记录中找到最小元素
    • 如果最小元素不是第一个元素,将其与第一个元素位置互换;
    • 从剩下的n-1个元素找到最小记录,重复1,2步骤。
  • 由于算法比较简单,就不进行动态演示了,只要注意调换元素的范围是待排元素。
  • 算法分析

    • 复杂度

      排序名称 最好情况 最坏情况 平均情况
      简单选择 O(n^2) O(n^2) O(n^2)
    • 显然,简单选择排序的比较次数与初始序列无关;
    • 但是,移动次数与初始序列有关,数据基本有序时移动次数少。
#-*- coding:UTF-8 -*-
"""
本模块演示了一维数据的简单选择排序
"""def SelectSort(data=[1, 2, 3, 4, 5]):length = len(data)for i in range(length):min = ifor j in range(i+1, length):if data[min] > data[j]:min = jdata[min], data[i] = data[i], data[min]print("第{}趟排序结果".format(i), data)if __name__ == '__main__':testData = [1, 3, 2]SelectSort(testData)

此代码尚还可以优化,具体可以查看我的github。

排序算法-05简单选择排序(python实现)相关推荐

  1. 排序算法:简单选择排序算法实现及分析

    简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...

  2. 排序算法5——简单选择排序

    选择排序就是从待排序的元素中选择最小(最大)的元素,将其放在有序序列的相应位置,使这些元素构成有序序列.选择排序主要有两种:简单选择排序和堆排序. [简单选择排序] 编写算法,要求使用简单选择排序算法 ...

  3. 【排序算法】简单选择排序及实例_C语言代码实现_Python代码实现

    博客对您有所帮助的话,欢迎给个赞啦,你的鼓励是对我最大的支持! 有不足之处也请您评论指教 简单选择排序 简单选择排序是选择排序的一种. 问:那么什么是选择排序? 答:每趟从待排序的记录中选出关键字最小 ...

  4. 两种选择排序算法:简单选择排序、堆排序

    一.简单选择排序 空间复杂度:O(1) 时间复杂度:O(n^2) 稳定性:不稳定 适用性:顺序表.链表 //简单选择排序 void SelectSort(int A[],int n){for(i=0; ...

  5. 三种简单排序算法---冒泡排序,简单选择排序,直接插入排序

    冒泡排序 核心思想:类似水泡一样,一趟比较,通过相邻元素的交换,冒出当前序列的最小值(最大值)到相应位置 复杂度分析 最好的情况:序列本身有序,只要进行n-1次比较,无需交换,时间复杂度为O(n) 最 ...

  6. java 排序原理_简单选择排序算法原理及java实现(超详细)

    简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...

  7. 《大话数据结构》第9章 排序 9.4 简单选择排序

    9.4.1 简单选择排序算法 爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利.但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少.还有一种做股票的人,他们 ...

  8. js排序算法详解-选择排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-选择排序 相对于冒泡排序还有一种类似的方法就是选择排序,顾名思义就是选择性排序,什么意思呢? 这么来理解,假设 ...

  9. 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树

    文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...

最新文章

  1. 246.三元图的应用与绘图实战
  2. linux桌面文件夹改图标,Linux 给桌面程序设置个性化图标
  3. spark学习:java版JavaRDD与JavaPairRDD的互相转换
  4. Python库安装相关问题
  5. 湖南大学操作系统期末考试之英文PPT复习提纲
  6. mysql有rollup函数吗_MySQL-with rollup函数运用
  7. linux5.8启动mysql命令_linux的定时重启的具体命令? 非常感谢。。。
  8. UART通信协议知识入门
  9. 视频分辨率过高,导致部分手机播放失败
  10. HDU-3237-Help Bubu
  11. 如何测试充电宝输出电压-20210127
  12. Centos下安装SSH、FTP服务
  13. DBLE分库分表实战
  14. java-net-php-python-jspm驾驶培训系统计算机毕业设计程序
  15. PS制作钢铁质感文字
  16. Cocos之 从C++过渡到Lua
  17. MegaCli安装及使用
  18. 腾讯百度阿里,三巨头谁最开放?
  19. windows引导文件丢失解决办法
  20. Mac for 微信双开教程

热门文章

  1. container资源限制
  2. MyBatis 实际使用案例-settings
  3. 搭建基础架构-Page
  4. MyBatis常用配置解析-mapper标签
  5. 自定义线程池-java内置线程池构造方法介绍
  6. 多表查询中的一些概念
  7. Zuul:Pre和Post过滤器(上)
  8. SpringBoot Bean配置
  9. 创建二级索引_技术分享 | InnoDB 排序索引的构建
  10. OkHttp如何移除User-Agent,Accept-Encoding等框架自动添加的请求头参数