1. 冒泡排序
冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

步骤:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码实现:

def maopao_sort(array):for i in range(len(array)) :for j in range(len(array)-1) :if array[j]>array[j+1]:array[j], array[j+1]= array[j+1], array[j]return arraya=[3,15,7,2,9]
print(maopao_sort(a))

运行结果:
[2, 3, 7, 9, 15]
2.选择排序(Selection Sort)
原理:首先从未排序的数组中,找出最小(最大)的数,放在数组的第一个位置,然后再从剩余的元素中取出最小(最大)的数,放在剩余元素的第一个位置,依次类推,直到所有的元素排完。
用两种方法实现,代码如下:

def select_sort(list):length=len(list)for index in range(length):for i in range(index,length):if list[index]>list[i]:list[index],list[i]=list[i],list[index]
    return listlist=[20,7,5,8,1]
print(select_sort(list))
def select_sort(array):for i in range(len(array)):num = i   #存索引位置for j in range(i,len(array)-1):if array[j]>array[j+1]:num=j+1[array[i],array[num]]=[array[num],array[i]]return arraya=[20,7,5,8,1,100]
print(select_sort(a))

3. 插入排序(Insertion Sort)
原理:假设第一个元素是已排序好的,取下一个元素,跟前面已经排序好的进行比较,若大于已排序好的,则交换,依次类推,直到所有元素排好。

def insertion_sort(array):for i in range(len(array)-1):for j in range(i+1,0,-1): #降序if array[j]<array[j-1]:array[j-1],array[j]=array[j],array[j-1] #交换return array"""调用函数检验"""
a=[20,7,5,8,1,100]
print(insertion_sort(a))

4. 希尔排序(Shell Sort)
原理:希尔排序的实质就是分组插入排序,该方法又称缩小增量排序
基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2(d2小于d1),重复上述的分组和排序;依次取d3、d4、…..直至取到dt=1为止,即所有记录放在同一组中进行直接插入排序。
代码实现:

def shell_sort(array):step = int(len(array)/2)while step > 0:for i in range(step,len(array)):while(i >= step and array[i] < array[i-step]):array[i],array[i-step] = array[i-step],array[i]i -= stepstep=int(step/2)return arraya=[5,2,7,1,3]
print(shell_sort(a))

5.归并排序
后续会更新。。

python实现排序算法 整理相关推荐

  1. python常见排序算法解析

    python--常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分 ...

  2. python 经典排序算法

    python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...

  3. python 选择排序算法

    一.选择排序(selection sort) 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位 ...

  4. python全排序算法题_Python的100道经典算法题(1)

    按照c语言的100道经典算法题,自己原创写的,就得是自己的练习题了 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数 ...

  5. python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  6. python实现排序算法_数据结构之(3)python实现排序算法

    常用排序与插入算法 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直 ...

  7. python写选择排序_如何快速掌握python选择排序算法?

    对于算法,我们不少讲述,但是大部分小伙伴都希望,将单个算法拆分讲解,这样可以更加深对算法的印象,好了,本期,就针对选择排序算法,给大家讲解说明哦~感兴趣的小伙伴一起来看下吧~ 在列表list模块中,已 ...

  8. python选择排序算法图解_python基本算法之实现归并排序(Merge sort)

    0.前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1.归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neuman ...

  9. python八大排序算法 间书_Python 八大排序算法速度比较

    这篇文章并不是介绍排序算法原理的,纯粹是想比较一下各种排序算法在真实场景下的运行速度. 算法由 Python 实现,用到了一些语法糖,可能会和其他语言有些区别,仅当参考就好. 测试的数据是自动生成的, ...

  10. 算法 64式 14、排序算法整理_1_1到15题

    1 算法思想 这里将寻找最小/大的前k个数,寻找逆序对,线性时间选择(寻找第k小/大的元素),奇偶/大小写字符分别放在前后部分等和排序相关类型的题目,放在了排序而不是查找中. 1.1含义 排序含义:重 ...

最新文章

  1. canvas requestAnimationFrame 动画
  2. Hive的两种操作模式
  3. Java面向对象(15)--static关键字静态理解与使用
  4. SIT与UAT的分别
  5. css设置鼠标滑过背景变色;鼠标滑过背景变色
  6. Spring循环依赖源码剖析
  7. Android系统运行库分为,Android系统架构
  8. sybase修改默认字符集为cp936
  9. HMM学习笔记_3(从一个实例中学习Viterbi算法)
  10. 毕设题目:Matlab语音去噪
  11. Linux操作系统——Linux 内核源码介绍内核升级
  12. Unity 粒子特效 不受Time.deltaTime影响
  13. 天天飞车六大研发经验
  14. 3D点云目标检测综述
  15. Cyclone IV E资源结构与重点电路
  16. python tkinter ttk的使用(下)
  17. calc()语法规则
  18. 二叉树相关题(Java实现)
  19. 单片机diy作品鉴赏,初学者进来膜拜
  20. 闰年 判断的两种方式

热门文章

  1. GenericObjectPool参数解析
  2. libQt5Core.so: undefined reference to `dlclose@GLIBC_2.4'
  3. hdu1864 最大报销额(01背包)
  4. 解决apache启动错误httpd:Could not reliably determine...
  5. 回lifesinger 的国庆题目
  6. C#3.0学习(2)---对象集合初始化器
  7. 33. 数据类型转换
  8. 18. jQuery - 尺寸
  9. 6. php 基本语法
  10. win7 docker centos安装mysql_CentOS 7 使用docker安装mysql