python_排序
快速排序
基本思想是:从一个数组中随机选出一个数N,通过一趟排序将数组分割成三个部分,1、小于N的区域 2、等于N的区域 3、大于N的区域,然后再按照此方法对小于区的和大于区分别递归进行,从而达到整个数据变成有序数组。
#实现第一次排序,之后使用递归方法完成以后的排序
def quick_sort(list,start,end):
left = start
right = end
key = list[left]#找到一个关键数字,一般为第一个元素
while left < right:
#从最后一个元素开始向前与关键字key比较直到left=right 或右边的数字小于关键字为止
while left < right and list[right] >= key:
right -=1
list[left],list[right] = list[right],list[left]
#从左边的第一个元素开始向后域关键字比较直到left=right 或左边的数字大于关键字为止
while left < right and list[left] <= key:
left +=1
list[left], list[right] = list[right], list[left]
return list
list = [6,2,7,3,9,8]
print(quick_sort(list,0,len(list)-1))
————————————————————————————————
def quick_sort(list,start,end):
left = start
right = end
if left <right:
key = list[left]#找到一个关键数字,一般为第一个元素
while left < right:
#从最后一个元素开始向前与关键字key比较直到left=right 或右边的数字小于关键字为止
while left < right and list[right] >= key:
right -=1
list[left],list[right] = list[right],list[left]
#从左边的第一个元素开始向后域关键字比较直到left=right 或左边的数字大于关键字为止
while left < right and list[left] <= key:
left +=1
list[left], list[right] = list[right], list[left]
#将列表中关键字的地方左右分为两组
quick_sort(list,start,left-1)#左边的分组
quick_sort(list,right+1,end)#右边的分组
return list
list = [6,2,7,3,9,8]
print(quick_sort(list,0,len(list)-1))
插入排序
插入排序的基本操作就是将一个数据插入到已经排序好的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序
有一个已经有序的序列,要求在这个已经排好的数据序列中插入一个数,要求插入后数据序列仍然有序,此时使用插入排序
插入排序的的步骤
1、从第一个元素开始,该元素认为是已经排序好的
2、取出下一个元素,在已经排序好的元素序列中从后向前扫描
3、如果该元素(已经排序好的)大于新元素则将该元素移到下一位置
4、重复步骤3,直到找到已经排好的元素小于或等于该元素为止
5、将新元素插入到下一位置中
6、重复2~5的步骤
def insert_sort(list):
#循环次数
for i in range(1,len(list)):
#确定关键数字
key = list[i]
j = i-1
while j >=0 and list[j] > key:
# 如果该元素(已经排序好的)大于新元素(key)则将该元素移到下一位置
list[j+1] = list[j]
j-=1
#将该元素(key)插入到下一个位置中
list[j+1] = key
return list
list = [4,5,25,74,1,3,4,]
print(insert_sort(list))
python_排序的更多相关文章
- python_如何对字典进行排序?
案例: 某班英语成绩以字典的形式存储为: {'lili':78, 'jin':50, 'liming': 30, ......} 依据成绩高低,进行学生成绩排名 如何对字典排序? 方法1: #!/us ...
- Python_每日习题_0005_三数排序
# 题目: # 输入三个整数x,y,z,请把这三个数由大到小输出. # 程序分析: 练练手就随便找个排序算法实现一下,偷懒就直接调用函数. #方法一:排序 raw = [] for i in rang ...
- python_选择排序
#选择排序 def insert_sort(li): for i in range (1,len(li)): # i表示摸到牌的下标 tem = li[i] j = i - 1 # j 是初始手中的牌 ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
随机推荐
- xml 需要转义的字符
XML实体中不允许出现"&","<",">"等特殊字符,否则XML语法检查时将出错,如果编写的XML文件必须包含这些字符 ...
- Mysql常用数据类型归纳总结1
一直在用Mysql数据库,Mysql的数据类型也最常打交道的.但关于Mysql的一些常用数据类型了解程度仅限于一知半解,仅仅能满足满足于平时一些最简单的操作.而Mysql常用数据类型的定义以及规范理解 ...
- Luogu P2668 斗地主(NOIP2015)
还记得那道我只用特判得了30分的"斗地主"吗? 我今天脑抽打算把它改A掉.为什么不用这大好时光去干些更有意义的事 于是我就挖了这个坑. 题解: 题目链接:P2668 斗地主 本题就 ...
- GPS学习笔记
预备知识 1. 卫星发送信号时,是以特定频率的电磁波为载波,调整信号到载波上的.多普勒效应就是,卫星和接收机是相对运动的,那么载波的频率会随运动距离发生改变.(<GPS测量与数据处理>p3 ...
- Java抽象类、接口、内部类
抽象类的概念: 1.Java中可以定义没有方法体的方法,还方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类: 2.如,shape类计算周长和面积的方法无法确定,那么就可以将这样 ...
- 口胡题fr
T1五种贡献恶心的要死.$1.grand$$2.father$$3.brother$$4.son$$5.grandson$我们选择维护三个量.1.儿子和,$sx$2.孙子和,$gsx$3.自己的值,$ ...
- js动态显示当前时间+数字大小转换+小于9前面补0
<script type="text/javascript"> function getTime(){ var myDate = new Date(); // 年份 d ...
- Kubernetes3-kubectl管理Kubernetes容器平台-2
一.kubectl管理集群中deployment资源与service服务 1.相关参数 kubectl edit 编辑服务器侧资源 kubectl replace 替换,使用 yaml 配置文件来替换 ...
- 文字转换为svg动画
将输入文本根据使用字体转化为描边动画. 详情请看git https://oubenruing.github.io/svg-text-animate/
- Python实现王者荣耀小助手(一)
简单来说网络爬虫,是指抓取万维网信息的程序或者脚本,Python在网络爬虫有很大优势,今天我们用Python实现获取王者荣耀相关数据,做一个小助手: 前期准备,环境搭建: Python2.7 sys模 ...