文章目录

  • 二、选择排序
  • 三、插入排序

二、选择排序

1、选择介绍
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

2、算法步骤

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  • 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  • 重复第二步,直到所有元素均排序完毕。

3、动图演示

4、Python练习

def selectionSort(arr):for i in range(len(arr) - 1):minIndex = i  # 记录最小数的索引for j in range(i + 1, len(arr)):if arr[j] < arr[minIndex]:minIndex = jif i != minIndex:  # i 不是最小数时,将 i 和最小数进行交换arr[i], arr[minIndex] = arr[minIndex], arr[i]return arr
a = [3,5,15,2,26,27,4,19,36,47,28,50,19,48,44]
selectionSort(a)
print(a)

三、插入排序

1、插入理解
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。

2、算法步骤

  • 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

  • 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

3、动图演示

4、Python演示

def insertionSort(arr):for i in range(len(arr)):  # 第一层遍历每个数字,一次选中一个preIndex = i-1  # 记录需要进行插入的数的下标current = arr[i]  # 记录需要进行插入的数的值while preIndex >= 0 and arr[preIndex] > current:  # 遍历未排序的数,找到位置在需要插入的数后面且比需要插入的数大的数arr[preIndex+1] = arr[preIndex]preIndex-=1arr[preIndex+1] = currentreturn arr
a = [3,5,15,2,26,27,4,19,36,47,28,50,19,48,44]
insertionSort(a)
print(a)

文章转载于:
十大经典排序算法(Python)

十大经典排序算法2(Python版本)相关推荐

  1. 按复杂度有效性递减排序_十大经典排序算法:python源码实现,通俗深入讲解

    概述 提示:本文上万字,陆陆续续疏理知识点加测试代码,耗时近一个月.阅读时长40分钟左右. 本文将十大经典排序算法进行汇总,从源码实现.复杂度.稳定性进行分析,并对每种排序的特性进行点评.对典型算法, ...

  2. 9个元素换6次达到排序序列_全面讲解十大经典排序算法(Python实现)

    作者 | hustcc 链接 | https://github.com/hustcc/JS-Sorting-Algorith 排序算法是<数据结构与算法>中最基本的算法之一.排序算法可以分 ...

  3. 十大经典排序算法3(Python版本)

    文章目录 四.希尔排序 五.归并排序 四.希尔排序 1.希尔介绍 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本.但希尔排序是非稳定排序算法. 希尔排序是基于插入排序的以下两点性质而 ...

  4. 十大经典排序算法6(Python版本)

    文章目录 九.桶排序 十.基数排序 九.桶排序 1.桶排序介绍 桶排序是计数排序的升级版.它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定.为了使桶排序更加高效,我们需要做到这两点: 在 ...

  5. 十大经典排序算法5(Python版本)

    文章目录 七.堆排序 八.计数排序 七.堆排序 1.堆排序介绍 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法.堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键 ...

  6. 十大经典排序算法4(Python版本)

    文章目录 六.快速排序 六.快速排序 1.快速介绍 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较.在最坏状况下则需要 Ο(n2) 次比较,但这 ...

  7. 十大经典排序算法1(Python版本)

    文章目录 一.排序算法与时间复杂度 二.冒泡排序 一.排序算法与时间复杂度 1.十大排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次 ...

  8. 数据结构十大经典排序算法--Python

    十大经典排序算法 (java实现看这个)https://program.blog.csdn.net/article/details/83785159 名词解释: 1.冒泡排序 2.选择排序 3.插入排 ...

  9. python经典排序_python实现十大经典排序算法

    写在前面 本文参考十大经典排序算法(动图演示),这篇文章有动图显示,介绍的很详细.本文是部分内容有借鉴此博客,用python实现,有一些改进. 各种算法的时间.空间复杂度 1.冒泡排序 1.比较相邻的 ...

最新文章

  1. 近期活动盘点:​年末必学课程《社会网络分析》
  2. Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
  3. IPC之IPC_PRIVATE与ftok比较
  4. 【学术相关】U.S.News正式发布最新的2022最佳全球院校排名
  5. wxWidgets:wxPropertyGridManager类用法
  6. 在Windows上面安装多个Memcached
  7. struts国际化java_java框架篇---Struts2 本地化/国际化(i18n)
  8. 英雄联盟微信登录服务器怎么回事,英雄联盟微信怎么登陆 lol微信登录功能开放大区一览...
  9. 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇
  10. __cdecl , __fastcall 和__stdcall区别
  11. Demo3D详解-----附下载地址
  12. 微信公众号制作简单线上预约系统,公众号预约系统怎么做
  13. 单片机学习日记- Day12
  14. php pandoc,Pandoc 标记语言转化工具
  15. SDL2音视频渲染入门
  16. 【VMW】虚拟机安装Linux系统
  17. 数商云精细化工行业管理平台一体化信息化解决方案
  18. MATLAB中的set函数
  19. 黑色星期五c语言程序,[蓝桥杯][算法训练VIP]黑色星期五 (C语言代码)
  20. 超强:Unix道德经(英文版) 1

热门文章

  1. 参考平面及其高度_施工现场平面布置关键点分析
  2. php中pdo连接数据库,PHP使用PDO连接数据库
  3. gperftools安装使用_记一次使用gperftools优化线上程序
  4. ps右键不显示编辑选项_0基础小白能上手的AE动态插画教程你还不知道么?
  5. java 开源地图引擎_开源三维地图框架-Cesium
  6. kettle分布式部署_Kettle(三)分布式架构
  7. linux dd 硬盘 脚本,如何使用dd命令测试Linux磁盘的读写速度
  8. .db怎么复制到java里_如何在MongoDB中将集合从一个数据库复制到另一个数据库
  9. python4发布,Python 2.7.4、3.2.4、3.3.1版本发布
  10. DS8100存储系统安装配置之个人总作篇