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网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
随机推荐
- 第三十四章 POSIX消息队列
POSIX消息队列相关函数 mq_open 功能: 用来创建和访问一个消息队列 原型: mqd_t mq_open(const char *name, int oflag); //只能用来打开消息队列 ...
- 知否知否,VS Code 不止开源
VS Code, 昨夜始于“开源”,如今“开源”深处渡. 读者看到这句话,也许会有疑惑,为什么两个“开源”都加上了双引号? 其实是笔者有意为之,因为这个两个“开源”的意义有着很大的差别,第一个“开源” ...
- Spring MVC-------文件上传,单文件,多文件,文件下载
Spring MVC 框架的文件上传是基于 commons-fileupload 组件的文件上传,只不过 Spring MVC 框架在原有文件上传组件上做了进一步封装,简化了文件上传的代码实现,取消了 ...
- 通俗易懂了解React生命周期
1.前言 学习React时,学习组件的生命周期是非常重要的,了解了组件的"从无到有再到无"所经历的各个状态,对日后写高性能的组件会有很大的帮助. 2.生命周期图 React的生命周 ...
- 『题解』POJ1753 Flip Game
题目传送门 题意描述 有\(4 \times 4\)的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑\(\to\)白 或 白\(\to\)黑)时,其周围上下左右(如果存在的话)的格 ...
- [网络]HTTP
HTTP HTTP 简介 HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本 ...
- web常用自动化库——selenium总结
概述 selenium是一个模拟控制浏览器操作的自动化库,它可以做到元素定位,鼠标事件,浏览器事件,js脚本执行等操作 与request不同的是,request是单独请求一个http,而seleniu ...
- svg自适应写法
svg自适应写法<pre><!DOCTYPE html><html lang="en"> <head> <meta chars ...
- PHP 从另一个角度来分析 Laravel 框架的依赖注入功能
从根本上说,依赖注入不是让对象创建一个依赖关系,也不是让工厂对象去创建对象,而是将所需的依赖变成一个外部对象,使之成为一个"某些人的问题” 你为"某些人的问题”注入了类的依赖关系. ...
- Java枚举——枚举的作用、使用方法、使用场景
枚举的定义 枚举关键字enum 枚举类是一种特殊类,它和普通类一样可以使用构造器.定义成员变量和方法,也可以实现多个接口,但不能继承类. 枚举的使用 enum Color { RED, BLUE, G ...