python排序的方法实例总结
1、冒泡排序
它反复访问要排序的元素列,并依次比较两个相邻的元素。如果顺序(如从大到小)错了,就交换它们。访问元素的工作是反复进行,直到没有相邻元素需要交换,也就是说元素列已经排序完成。
2、选择排序
首次从待排序的数据元素中选择最小(或最大)的元素,存储在序列的开始位置,然后从剩余的未排序元素中找到最小(大)元素,然后放在已排序的末尾。直到所有元素都被排序。
3、插入排序
对于未排序的数据,通过构建有序的序列,在已排序的序列中从后向前扫描,找到相应的位置并插入。插入式排序在实现上,在从后向前扫描的过程中,需要反复将已排序的元素逐步向后移动,为最新的元素提供插入空间。
4、快速排序
将要排序的数据通过一次排序分成两个独立的部分,其中一个部分的所有数据都小于另一个部分的所有数据,然后按照这种方法对这两个部分的数据进行快速排序,整个排序过程可以递归进行,从而使整个数据成为有序的序列。
5、希尔排序(插入排序改进版)
首先,将要排序的一组数量按某个增量d分为几个组,每组中记录的下标相差d,对每组中的所有元素进行排序,然后用较小的增量对其进行分组,然后对每组进行排序。当增量减少到1时,整个要排序的数量被分成一组,排序完成。
6、归并排序
首先递归分解组,然后合并组。基本思路是比较两个数组的面的数字,谁小就先取谁,取后相应的指针向后移动一个。然后再比较,直到一个数组是空的,最后复制另一个数组的剩余部分。
实例扩展:
>>> data1=[4,2,6,432,78,43,22,896,42,677,12] >>> data1.sort() >>> data1 #原来的顺序被替换 [2, 4, 6, 12, 22, 42, 43, 78, 432, 677, 896]
>>> data1=[4,2,6,432,78,43,22,896,42,677,12] >>> data2=sorted(data1) >>> data1 [4, 2, 6, 432, 78, 43, 22, 896, 42, 677, 12] #原顺序保留 >>> data2 [2, 4, 6, 12, 22, 42, 43, 78, 432, 677, 896] #对副本排序 >>>
到此这篇关于python排序的方法实例总结的文章就介绍到这了,更多相关python有几种排序的方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python列表排序方法reverse、sort、sorted详解
python语言中的列表排序方法有3个: reverse反转/倒序排序 sort正序排序 sorted可以获取排序后的列表 在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse()方法 将列表中元素反转排序,比如下面这样 >>> x = [1,5,2,3,4] >>> x.reverse() >>> x [4, 3, 2, 5, 1] reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排
-
python实现列表的排序方法分享
这次代码主要是实现列表的排序,使用sort函数实现,sort函数是对列表中的元素按照特定顺序进行排序,默认reverse,为false,从小到大排序, 如果指定reverse=True,从大到小. 语法格式:l.sort(),希望对你们有所帮助 第一步:先打开我们的pycharm软件,然后新建一个python文件."file","new","python file" 第二步:新建好我们的python文件之后,在我们的编辑页面输入以下代码: l=[
-
Python OrderedDict字典排序方法详解
很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集.集合),里面自带了一个子类 OrderedDict,实现了对字典对象中元素的排序.请看下面的实例: import collections print "Regular dictionary" d={} d['a']='A' d['b']='B' d['c']='C' for k,v in d.items(): print k,v print "\
-
Python sorted排序方法如何实现
在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) sorted定义如下: sorted( iterable[, cmp[, key[, reverse]]]) iterable:是可迭代类型类型; cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项; key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项; reverse:排序规则. reverse = True 或者 r
-
python字典按照value排序方法
python中,我们可以对列表.字符串.元祖中的元素进行排序,那对于字典中的元素可以排序吗?其实对于字典本身我们无法进行排序,但是我们可以对字典按值排序.本文介绍python中对字典按照value进行排序的三种方法. 方法一:key使用lambda匿名函数取value进行排序 dict= {'a':1,'b':4,'c':2} sorted(dict.items(),key = lambda x:x[1],reverse = True) 方法二:使用operator的itemgetter进行排序
-
python排序的方法实例总结
1.冒泡排序 它反复访问要排序的元素列,并依次比较两个相邻的元素.如果顺序(如从大到小)错了,就交换它们.访问元素的工作是反复进行,直到没有相邻元素需要交换,也就是说元素列已经排序完成. 2.选择排序 首次从待排序的数据元素中选择最小(或最大)的元素,存储在序列的开始位置,然后从剩余的未排序元素中找到最小(大)元素,然后放在已排序的末尾.直到所有元素都被排序. 3.插入排序 对于未排序的数据,通过构建有序的序列,在已排序的序列中从后向前扫描,找到相应的位置并插入.插入式排序在实现上,在从后向前扫
-
Python对列表排序的方法实例分析
本文实例讲述了Python对列表排序的方法.分享给大家供大家参考.具体分析如下: 1.sort()函数 sort()函数使用固定的排序算法对列表排序.sort()函数对列表排序时改变了原来的列表,从而让其中的元素能按一定的顺序排列,而不是简单的返回一个已排序的列表副本. 注意sort()函数改变原来的列表,函数返回值是空值即None.因此,如果需要一个已排好序的列表副本,同时又要保留原有列表不变的时候,就不能直接简单的使用sort()函数.为了实现上述功能使用sort()的方法是:先获取列表X的
-
Python中replace方法实例分析
本文以实例形式讲述了Python中replace方法,很有实用价值,具体如下: replace方法主要有两种: last_date = "1/2/3" 目标为"123" 方法一:repalce date =last_date.replace('/','') 方法二:re p = re.compile("/") date = p.sub('', last_date) 需要注意的是:一定不要转义,否则函数不会生效. replace 方法返回根据正则表
-
python避免死锁方法实例分析
本文实例讲述了python避免死锁方法.分享给大家供大家参考.具体分析如下: 当两个或者更多的线程在等待资源的时候就会产生死锁,两个线程相互等待. 在本文实例中 thread1 等待thread2释放block , thread2等待thtead1释放ablock, 避免死锁的原则: 1. 一定要以一个固定的顺序来取得锁,这个列子中,意味着首先要取得alock, 然后再去block 2. 一定要按照与取得锁相反的顺序释放锁,这里,应该先释放block,然后是alock import thre
-
Python sqlite3事务处理方法实例分析
本文实例讲述了Python sqlite3事务处理方法.分享给大家供大家参考,具体如下: sqlite3事务总结: 在connect()中不传入 isolation_level 事务处理: 使用connection.commit() #!/usr/bin/env python # -*- coding:utf-8 -*- '''sqlite3事务总结: 在connect()中不传入 isolation_level 事务处理: 使用connection.commit() 分析: 智能commit状
-
Python常用特殊方法实例总结
本文实例讲述了Python常用特殊方法.分享给大家供大家参考,具体如下: 1 __init__和__new__ __init__方法用来初始化类实例:__new__方法用来创建类实例. 主要的区别: 1).__init__通常用于初始化一个新实例,控制初始化的过程,发生在类实例被创建完以后.它是实例级别的方法. 2).__new__通常用于控制生成一个新实例的过程.它是类级别的方法. __new__具体的作用: 1) 继承一些不可变的class时(比如int, str, tuple),提供一个自
-
python多线程使用方法实例详解
本文实例讲述了python多线程使用方法.分享给大家供大家参考,具体如下: threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器. 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成. 如果主线程准备退出时,不需要等待某些子线程完成,就可以为这些子线程设置守护线程标记. 需要在启动线程之前执行如下赋值语句: thread.daemon = True,检查线程的守护状态也只需要检查这个值即可. 整个 Python 程序将在所有非守护线程
-
Python发送Email方法实例
本文以实例形式展示了Python发送Email功能的实现方法,有不错的实用价值的技巧,且功能较为完善.具体实现方法如下: 主要功能代码如下: #/usr/bin/env python # -*- encoding=utf-8 -*- import base64 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText class CCSendMail: de
-
Python读取stdin方法实例
Python中常用到的两种标准化输入方式:分别sys.stdin和input,两者使用方式大致相同,但是总的来说sys.stdin使用方式更加多样化一些,下面就例子说明两者之间的使用差别. 1.input输入 input输入很简单,就是获得用户的输入,一般是在控制台界面. 运行之后就可以等待用户输入了,最终系统会认为回车键是输入的结束. 2.sys.stdin输入 第一他也可以实现和input一样的功能,比如 但是,他更常见的是另外一种使用方式,可以直接使用文件作为整体的输入,可以很简洁. 使用
-
Golang中Map按照Value大小排序的方法实例
目录 起因 探索 实现 第一步 第二步 第三步 总结 总结 Golang中的 map 默认是 无序的 . 起因 最近项目中有这样一个需求: 根据用户当前的坐标点,获取该用户附近的预设城市名称. 这里有一个注意点是,假设这些支持的城市名称是预设的,所以就不能直接通过地图类api根据坐标点获取所在城市名称了. 想到的解决思路是: 获取这几个预设城市的坐标点 App端获取用户当前坐标点 分别计算得到该用户坐标点距离各个预设城市的坐标点距离 然后计算得到其中距离最小的一项 这个坐标点对应的城市就是所求
随机推荐
- jquery实现左右滑动式轮播图
- 基于javascript实现最简单的选项卡切换效果
- PowerShell中使用Get-Date获取日期时间并格式化输出的例子
- extjs form textfield的隐藏方法
- Dreamweaver网页设计制作技巧与提高 好东西
- 使用Python神器对付12306变态验证码
- Bootstrap模态框插件使用详解
- Android中关于Notification及NotificationManger的详解
- php分别做为cgi和module来运行的配置
- python制作爬虫并将抓取结果保存到excel中
- 不用数据库的多用户文件自由上传投票系统(1)
- jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
- JavaScript中的alert()函数使用技巧详解
- javascript中解析四则运算表达式的算法和示例
- android使用OkHttp实现下载的进度监听和断点续传
- 7种形式的Android Dialog使用实例
- C++ 中String 替换指定字符串的实例详解
- android表格效果之ListView隔行变色实现代码
- 10个在JavaScript开发中常遇到的BUG
- OpenCV搞定腾讯滑块验证码的实现代码