python实现排序算法 整理
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实现排序算法 整理相关推荐
- python常见排序算法解析
python--常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分 ...
- python 经典排序算法
python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...
- python 选择排序算法
一.选择排序(selection sort) 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位 ...
- python全排序算法题_Python的100道经典算法题(1)
按照c语言的100道经典算法题,自己原创写的,就得是自己的练习题了 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数 ...
- python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)
简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...
- python实现排序算法_数据结构之(3)python实现排序算法
常用排序与插入算法 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直 ...
- python写选择排序_如何快速掌握python选择排序算法?
对于算法,我们不少讲述,但是大部分小伙伴都希望,将单个算法拆分讲解,这样可以更加深对算法的印象,好了,本期,就针对选择排序算法,给大家讲解说明哦~感兴趣的小伙伴一起来看下吧~ 在列表list模块中,已 ...
- python选择排序算法图解_python基本算法之实现归并排序(Merge sort)
0.前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1.归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neuman ...
- python八大排序算法 间书_Python 八大排序算法速度比较
这篇文章并不是介绍排序算法原理的,纯粹是想比较一下各种排序算法在真实场景下的运行速度. 算法由 Python 实现,用到了一些语法糖,可能会和其他语言有些区别,仅当参考就好. 测试的数据是自动生成的, ...
- 算法 64式 14、排序算法整理_1_1到15题
1 算法思想 这里将寻找最小/大的前k个数,寻找逆序对,线性时间选择(寻找第k小/大的元素),奇偶/大小写字符分别放在前后部分等和排序相关类型的题目,放在了排序而不是查找中. 1.1含义 排序含义:重 ...
最新文章
- canvas requestAnimationFrame 动画
- Hive的两种操作模式
- Java面向对象(15)--static关键字静态理解与使用
- SIT与UAT的分别
- css设置鼠标滑过背景变色;鼠标滑过背景变色
- Spring循环依赖源码剖析
- Android系统运行库分为,Android系统架构
- sybase修改默认字符集为cp936
- HMM学习笔记_3(从一个实例中学习Viterbi算法)
- 毕设题目:Matlab语音去噪
- Linux操作系统——Linux 内核源码介绍内核升级
- Unity 粒子特效 不受Time.deltaTime影响
- 天天飞车六大研发经验
- 3D点云目标检测综述
- Cyclone IV E资源结构与重点电路
- python tkinter ttk的使用(下)
- calc()语法规则
- 二叉树相关题(Java实现)
- 单片机diy作品鉴赏,初学者进来膜拜
- 闰年 判断的两种方式
热门文章
- GenericObjectPool参数解析
- libQt5Core.so: undefined reference to `dlclose@GLIBC_2.4'
- hdu1864 最大报销额(01背包)
- 解决apache启动错误httpd:Could not reliably determine...
- 回lifesinger 的国庆题目
- C#3.0学习(2)---对象集合初始化器
- 33. 数据类型转换
- 18. jQuery - 尺寸
- 6. php 基本语法
- win7 docker centos安装mysql_CentOS 7 使用docker安装mysql