我们首先找到其中最大的元素,并将其放在 n<script id="MathJax-Element-11" type="math/tex">n</script> 的位置(也即交换),然后继续排序剩下的元素:

递归版:

def sel_sort_rec(seq, n):if n == 0: return max_j = nfor i in range(n):if seq[i] > seq[max_j]:max_j = iseq[n], seq[max_j] = seq[max_j], seq[n]sel_sort_rec(seq, n-1)

迭代版:

def sel_sort(seq):n = len(seq)for i in range(n-1, 0, -1):max_j = ifor j in range(i):if seq[j] > seq[max_j]:max_j = jseq[i], seq[max_j] = seq[max_j], seq[i]

Python 数据结构与算法——选择排序(迭代版、递归版)相关推荐

  1. Python数据结构与算法(4.1)——递归

    Python数据结构与算法(4.1)--递归 0. 学习目标 1 递归 1.1 递归的基本概念 1.2 递归的重要性 1.3 递归三原则 1.4 递归的应用 2 递归示例 2.1 列表求和 2.2 汉 ...

  2. python数据结构与算法之排序

    排序算法的稳定性: 假设有一串数据:(4,1)(3,1)(3,7)(5,6):要求按照第一个数排序,结果如下: 第一种:(3,1)(3,7)(4,1)(5,6)(3相同,维持原来的次序) 第二种:(3 ...

  3. python数据结构与算法:排序算法(面试经验总结)

    快排:最优复杂度 O(n*logn) 最坏时间复杂度O(n^2)平均时间复杂度n^(1.3) 归并排序:最优/平均/最坏  时间复杂度均O(nlogn),但是内存占用为list大小的两倍,算法稳定 # ...

  4. JS数据结构与算法——选择排序(把小的数字依次往前放)

    一.图解排序过程 注意:选择排序一样是需要进行两两的比较,但比较过程中不进行交换,只有比较完成后,找到最小的那个数,才会进行交换,把它放到最前面. 二.代码实现 三.完整代码 <!DOCTYPE ...

  5. 【2】数据结构与算法 —— 选择排序算法

    选择排序分为简单选择排序和堆排序,下面看看两个算法直接的对比. 1.简单选择排序 简单选择排序法就是通过n-i此关键字间的比较,从n-i-1个记录中选出关键字最小的记录,并且和第i个记录交换.实现如下 ...

  6. 数据结构与算法——选择排序

    //选择排序 #include<stdio.h> void SelectSort(int arr[],int len); int main(void) { int i; int arr[9 ...

  7. Python 数据结构与算法——侏儒排序

    侏儒排序作为排序算法的历史地位远不及对其进行时间复杂度分析的地位来得高. def gnomesort(l):i = 0while i < len(l):if i == 0 or l[i-1] & ...

  8. Python 数据结构与算法——拓扑排序

    几乎在所有的项目,甚至日常生活,待完成的不同任务之间通常都会存在着某些依赖关系,这些依赖关系会为它们的执行顺序行程表部分约束.对于这种依赖关系,很容易将其表示成一个有向无环图(Directed Acy ...

  9. 02_Python算法+数据结构笔记-冒泡排序-选择排序-插入排序-快排-二叉树

    b站视频:路飞IT学城 清华计算机博士带你学习Python算法+数据结构_哔哩哔哩_bilibili 文章目录 #11 排序介绍 #12 冒泡排序介绍 #13 冒泡排序 #14 选择排序 #15 插入 ...

最新文章

  1. 剑指Offer #02 替换空格(字符串处理)
  2. afterclass_通过beforeClass和afterClass设置增强Spring Test Framework
  3. ubuntu 查看进程信息
  4. 2017.5.8-morning
  5. 高级 Java 程序员都在学什么?
  6. shell 备份并删除几日内的历史文件
  7. 张宇八套卷(四)复盘
  8. latex表格手把手超详细教程(table, tabular, multirow, multicolumn)
  9. 大话WebRTC的前世今生
  10. 云服务器ECS的基本概念
  11. python羊车门问题的正确解答
  12. 使用 PHP 和 MySQL 的安全登录系统
  13. 用python画象棋棋盘_Python turtle绘画象棋棋盘
  14. pandas中访问使用多个索引的Series
  15. 无名师的Unix心传
  16. 【玩转yolov5】请看代码之augment_hsv
  17. 洛谷 P3924 康娜的线段树 解题报告
  18. 实例分享--消消乐也能做H5游戏?
  19. VB.NET使用S7.NET.dll连接西门子PLC200、200smart、300、400、1200
  20. Window VMware MAC OS 安装

热门文章

  1. java和scala_什么是Scala及它与Java的区别
  2. delphi 子接口是否实现父接口_您可以从子类接口的接口调用父接口的默认方法吗?...
  3. python创建类的实例化_在C中实例化python类#
  4. python入门指南by许半仙长佩_有哪些好看的耽美文啊?
  5. LeetCode 94. 二叉树的中序遍历(递归)(迭代)(颜色标记法)
  6. Linux——CMake更新和安装
  7. Linux 完全卸载重装opencv
  8. 并发编程(1): volatile、原子变量、自旋锁和互斥锁
  9. open cv+C++错误总结(一)
  10. 基于uFUN开发板的RGB调色板