排序,是许多编程语言中经常出现的问题。同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现)

一、使用Python内置函数进行排序

Python中拥有内置函数实现排序,可以直接调用它们实现排序功能

Python 列表有一个内置的 list.sort() 方法可以直接修改列表。还有一个 sorted() 内置函数,它会从一个可迭代对象构建一个新的排序列表。

1.sort()函数:

list.sort(cmp=None, key=None, reverse=False)

其中参数的含义是:

cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

默认输入列表就可以排序,例如:

list=[1,2,4,5,3]

list.sort()

print(list)

>>>[1,2,3,4,5]

2.sorted()函数:

sorted(iterable, cmp=None, key=None, reverse=False)

其中:

iterable -- 可迭代对象。

cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

同样的,使用sorted()函数可以对列表进行排序,例如:

list=[1,2,4,5,3]

print(sorted(list))

>>>[1,2,3,4,5]

sort()和sorted()虽然相似,都可以实现排序功能,但是它们有很大的不同:

sort ()与sorted()区别:

sort() 是应用在 list 上的方法,sorted() 可以对所有可迭代的对象进行排序操作。

list 的 sort() 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted() 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

二、使用常用的排序算法进行排序

同其他高级函数一样,Python也可以使用算法,利用一般语句进行排序。

1.冒泡排序

冒泡排序是最常见到的排序算法,也是很基础的一种排序算法。它的实现思想是:相邻的两个元素进行比较,然后把较大的元素放到后面(正向排序),在一轮比较完后最大的元素就放在了最后一个位置,像鱼儿在水中吐的气泡在上升的过程中不断变大,

def bubble_sort(list):

count = len(list)

for i in range(count):

for j in range(i + 1, count):

if list[i] > list[j]:

list[i], list[j] = list[j], list[i]

return list

2.选择排序

选择排序的思路是:第一轮的时候,所有的元素都和第一个元素进行比较,如果比第一个元素大,就和第一个元素进行交换,在这轮比较完后,就找到了最小的元素;第二轮的时候所有的元素都和第二个元素进行比较找出第二个位置的元素,以此类推。

def selection_sort(list):

length = len(list)

for i in range(length - 1, 0, -1):

for j in range(i):

if list[j] > list[i]:

list[j], list[i] = list[i], list[j]

return list

3.插入排序

插入排序的思想是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。 是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置), 而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中

def insert_sort(list):

count = len(list)

for i in range(1, count):

key = list[i]

j = i - 1

while j >= 0:

if list[j] > key:

list[j + 1] = list[j]

list[j] = key

j -= 1

return list

4.快速排序

快速排序的思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

def quick_sort(list, left, right):

if left >= right:

return list

key = lists[left]

low = left

high = right

while left < right:

while left < right and list[right] >= key:

right -= 1

lists[left] = lists[right]

while left < right and list[left] <= key:

left += 1

list[right] = list[left]

list[right] = key

quick_sort(list, low, left - 1)

quick_sort(list, left + 1, high)

return list

lst1 = raw_input().split()  #调用函数

lst = [int(i) for i in lst1]

#lst = input()

quick_sort(lst,0,len(lst)-1)

for i in range(len(lst)):

print lst[i],

5.希尔排序

希尔排序是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少, 每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

def shell_sort(list):

count = len(list)

step = 2

group = count / step

while group > 0:

for i in range(group):

j = i + group

while j < count:

k = j - group

key = list[j]

while k >= 0:

if list[k] > key:

list[k + group] = list[k]

list[k] = key

k -= group

j += group

group /= step

return list

使用python排序_Python排序相关推荐

  1. python 排序_Python 排序了解一下?

    脚本之家 你与百万开发者在一起 文 | 潮汐 来源:Python 技术「ID: pythonall」 排序是每个开发人员都需要掌握的技能.排序是对程序本身有一个全面的理解.不同的排序算法很好地展示了算 ...

  2. python set函数 返回排序_Python排序函数的使用方法详解

    Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,di ...

  3. python不用sort排序_Python排序之sortamp;sorted

    1 首先,Python中sort与sorted的区别: python中列表的内置函数sort()可以对列表中的元素进行排序,sort()函数是内置函数,会改变当前对象: 而全局性的sorted()函数 ...

  4. python逆序排序_python排序倒序

    Python编程中常用的12种基础知识 Python编程中常用的12种基础知识,其中肯定有你不会的! 1.正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串 2. ...

  5. shell排序_Python排序算法(五)希尔排序

    一. 核心思想 希尔排序(shell_Sort),也称递减增量排序算法,是插入排序的一种更高效的改进版本.基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录& ...

  6. python八大选择排序_Python实现选择排序

    选择排序: 选择排序(Selection sort)是一种简单直观的 排序算法 .它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最 ...

  7. python set 排序_python set 排序_如何在Python中使用sorted()和sort()

    点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基  著 18财税3班 李潇潇    译 日期:2019年5月6日 一. 使用sorted() ...

  8. python经典排序_python实现十大经典排序算法

    写在前面 本文参考十大经典排序算法(动图演示),这篇文章有动图显示,介绍的很详细.本文是部分内容有借鉴此博客,用python实现,有一些改进. 各种算法的时间.空间复杂度 1.冒泡排序 1.比较相邻的 ...

  9. python列表中字典排序_python中字典排序,列表中的字典排序

    python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...

最新文章

  1. 简洁易懂,初学者挑战学习Python编程30天 (一)
  2. 上海沙龙 - 接口测试自动化经验分享
  3. Qt 获取文件夹下所有文件
  4. excel图表交互联动_如何使用高大上的多级联动交互式图表来分析人员结构?
  5. `MediaDevices.getUserMedia` `undefined` 的问题
  6. 第六节:又一种新的数据类型:元组Tuple
  7. 记conda 安装geopandas遇到的一个小错误
  8. SpringBoot 整合 Security5
  9. Mac项目流程管理工具:OmniPlan Pro 4.4
  10. test luasql's postgresql driver performance (not better than pgbench)
  11. 基于Android语言的通信调试助手实现(TCP协议+Socket编程)
  12. 易语言linux时间戳转换,易语言unix时间戳转易语言格式源码
  13. LabVIEW调用声卡开发音频测试系统
  14. Matlab画曲线的切向量-quiver函数的应用
  15. 云部署中的 公有云 私有云 混合云 社区云 基本概念快速掌握
  16. RN:真机调试无线调试
  17. 遗传算法--函数最值问题
  18. GnuRadio Hacking②:使用SDR嗅探北欧芯片无线键盘鼠标数据包
  19. linux spool目录 删除,Linux知识:/var/spool/clientmqueue 下垃圾文件删除
  20. MapReduce中的自定义多目录/文件名输出HDFS

热门文章

  1. [BJWC2011]元素
  2. 官网英文版学习——RabbitMQ学习笔记(二)RabbitMQ安装
  3. IDEA 初次使用,记录心得
  4. 新浪的动态策略灰度发布系统:ABTestingGateway
  5. 基础知识学习-数据结构篇
  6. Datatable 使用技巧
  7. hdu 1524 A Chess Game
  8. .net生成缩略图,支持等比例缩放,加水印
  9. [转]30个自我提升技巧
  10. Pyspark 最近使用的一些有趣姿势的梳理