可能最简单的排序策略就是:
1.搜索整个列表,找到最小项的位置
2.如果该位置不是列表的第一项,则将两项交换位置
3.然后算法回到第二个位置并重复上述操作
4.当算法到达列表最后一个位置的时候,排序就完成了

首先我们需要定义一个用于交换位置的函数

def swap(lyst, i, j):"""Exchanges the elements at positions i and j."""temp = lyst[i]lyst[i] = lyst[j]lyst[j] = temp

下面是排序函数

def selectionSort(lyst):i = 0while i < len(lyst) - 1:        minIndex = i                 #首先设置第一项为最小项    j = i + 1                    while j < len(lyst):         # Start a searchif lyst[j] < lyst[minIndex]:minIndex = jj += 1if minIndex != i:            # Exchange if neededswap(lyst, minIndex, i)i += 1

基本排序算法01----选择排序(selection sort)相关推荐

  1. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  2. 经典排序算法(一) —— Selection Sort 选择排序

    经典排序算法(一) -- Selection Sort 选择排序 文章目录 经典排序算法(一) -- Selection Sort 选择排序 简介 排序过程 实现 复杂度 简介 选择排序是一种简单直观 ...

  3. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  4. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  5. Java经典排序算法:选择排序,动图演示排序过程

    Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...

  6. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  7. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  8. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

  9. 【排序算法】选择排序(C语言)

    [排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ​ ...

  10. C语言排序算法之选择排序

    文章目录 一.选择排序的概述 二.选择排序算法代码详解 (1)算法分析 (2)选择排序算法代码详解 三.总代码 一.选择排序的概述 选择排序(Selection sort)是一种简单直观的排序算法. ...

最新文章

  1. 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式
  2. 2019五月到六月反思复盘
  3. HD 1003 Max Sum (最大字段和问题)
  4. Thymeleaf一些标签的传字符串/message/消息
  5. 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试
  6. Image File Format Specifications {转载}
  7. FCM和Threshold
  8. PHP-FPM(PHP进程管理器)
  9. 如何让虚拟机mac支持独显_Mac上虚拟机的性能如何提升
  10. 【线性代数】6-5:正定矩阵(Positive Definite Matrices)
  11. python安装后桌面没有显示图标_Win10安装软件后找不到软件图标如何解决
  12. 图片转Word文档怎么转?这两种转换方法学起来
  13. javascript系列-class6.String类型
  14. 中易云 易云系统 电镀废水处理远程监控解决方案
  15. openbci/bciduino脑电放大器lsl数据解释
  16. DockOne微信分享(八十一):唯品会数据库备份恢复容器化项目实践经验总结
  17. STM32入门-区别ORD,BSRR,BRR寄存器
  18. 最新酷睿计算机配置,笔记本电脑什么配置好?来看最新Intel11代酷睿cpu
  19. 手机酷狗2 java_酷狗叮咚(原手机酷狗) 2.70 For Java 中文官方安装版下载
  20. Microsoft Store中应用的UWP什么意思?UWP版是什么意思?uwp版是什么意思?

热门文章

  1. Android.mk文件详解介绍
  2. fiddler模拟服务器响应,2020军队文职计算机知识:【软件测试基础知识】如何使用fiddler模拟接口服务器...
  3. 【1691. 堆叠长方体的最大高度】
  4. linux如何解除密码锁屏图案大全,三星密码锁屏怎么解除 两种方案来解决【图解】...
  5. Tomcat三个端口的作用
  6. dpcm编码 matlab程序,DPCM预测编码的MATLAB原代码: | 学步园
  7. 编程规范及程序员的自我修养
  8. 小学信息用计算机绘画教案,小学信息技术《初识画图》教学设计
  9. 取消苹果arcade订阅操作步骤
  10. shiro 721 反序列化漏洞复现与原理以及Padding Oracle Attack攻击加解密原理