#encoding=utf-8

import random

from copy import copy

def directInsertSort(seq):

""" 直接插入排序 """

size = len(seq)

for i in range(1,size):

tmp, j = seq[i], i

while j > 0 and tmp < seq[j-1]:

seq[j], j = seq[j-1], j-1

seq[j] = tmp

return seq

def directSelectSort(seq):

""" 直接选择排序 """

size = len(seq)

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

k = i;j = i+1

while j < size:

if seq[j] < seq[k]:

k = j

j += 1

seq[i],seq[k] = seq[k],seq[i]

return seq

def bubbleSort(seq):

"""冒泡排序"""

size = len(seq)

for i in range(1,size):

for j in range(0,size-i):

if seq[j+1] < seq[j]:

seq[j+1],seq[j] = seq[j],seq[j+1]

return seq

def _divide(seq, low, high):

"""快速排序划分函数"""

tmp = seq[low]

while low != high:

while low < high and seq[high] >= tmp: high -= 1

if low < high:

seq[low] = seq[high]

low += 1

while low < high and seq[low] <= tmp: low += 1

if low < high:

seq[high] = seq[low]

high -= 1

seq[low] = tmp

return low

def _quickSort(seq, low, high):

"""快速排序辅助函数"""

if low >= high: return

mid = _divide(seq, low, high)

_quickSort(seq, low, mid - 1)

_quickSort(seq, mid + 1, high)

def quickSort(seq):

"""快速排序包裹函数"""

size = len(seq)

_quickSort(seq, 0, size - 1)

return seq

def merge(seq, left, mid, right):

tmp = []

i, j = left, mid

while i < mid and j <= right:

if seq[i] < seq[j]:

tmp.append(seq[i])

i += 1

else:

tmp.append(seq[j])

j += 1

if i < mid: tmp.extend(seq[i:])

if j <= right: tmp.extend(seq[j:])

seq[left:right+1] = tmp[0:right-left+1]

def _mergeSort(seq, left, right):

if left == right:

return

else:

mid = (left + right) / 2

_mergeSort(seq, left, mid)

_mergeSort(seq, mid + 1, right)

merge(seq, left, mid+1, right)

#二路并归排序

def mergeSort(seq):

size = len(seq)

_mergeSort(seq, 0, size - 1)

return seq

if __name__ == ‘__main__‘:

s = [random.randint(0,100) for i in range(0,20)]

print s

print "\n"

print directSelectSort(copy(s))

print directInsertSort(copy(s))

print bubbleSort(copy(s))

print quickSort(copy(s))

print mergeSort(copy(s))

原文:http://www.cnblogs.com/huangxiaohen/p/3847353.html

python常用排序_python中的各种排序相关推荐

  1. python升序和降序排序_python中序列的排序,包括字典排序、列表排序、升序、降序、逆序...

    一.基础概念 我们知道python中的内建序列包括字典.列表.元组.字符串等,序列是python中最基本的数据结构. 列表.元组.字符串这类的序列的索引默认第一个元素的索引从0开始,第二个元素的索引是 ...

  2. mysqlorderby数字字符串排序_Python中的元组排序和深度比较

    比较Python中的东西.这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估. 我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用 ...

  3. python对数字排序_Python中数据的排序

    目录 列表的排序 列表的排序可以使用列表自带的 sort() 方法,也可以使用 sorted() 函数 sort() 方法是修改原列表:而 sorted() 函数是对列表的复制再排序,返回一个新的列表 ...

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

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

  5. python列表数据排序_Python中,如何将列表中数据排序给列表排序?

    在程序中使用字典进行数据信息統计时由于字典是无序的所以打印字典时内容也是无序的.因此为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排序和按&quo ...

  6. python优先级排序_python中使用优先队列

    相信对于队列的概念大家都不会陌生,这种先入先出的数据结构应用很广泛,像一般的生产消费都会用到队列,关于Queue的用法介绍可以参考我之前的文章 python中的Queue与多进程(multiproce ...

  7. python中lambda函数对时间排序_python – 使用lambda函数排序()

    我的字符串看起来像"co1 / co2","co3 / co4"--"co11 / co12" 将其描述为正则表达式: ^(?P\w\w)( ...

  8. python 类属性排序_Python实现多属性排序的方法

    多属性排序: 把需要排序的属性拿出来作为一个 tuple,主要的放前面,次要的放后面. 假如某对象有n个属性,那么先按某规则对属性a进行排序,在属性a相等的情况下再按某规则对属性b进行排序,以此类推. ...

  9. python 数组排序索引_python对数组进行排序,并输出排序后对应的索引值方式

    python对数组进行排序,并输出排序后对应的索引值方式 废话不多说,直接上代码吧! # -*- coding: cp936 -*- import numpy as np #一维数组排序 arr = ...

最新文章

  1. [转载]javascript创建对象的几种方式
  2. 【前端】layui日期控件点击一闪而过解决方法
  3. mxnet java 例子_mxnet(gluon) 实现DQN简单小例子
  4. win7 clr20r3程序终止_mscorsvw.exe是什么进程 win7系统怎么禁用mscorsvw.exe进程【禁用方法】...
  5. RUNOOB python练习题5
  6. [react] 你最不喜欢React的哪一个特性(说一个就好)?
  7. 程序运行时被用户删除了工作目录后崩溃
  8. 多线程之-并发任务间交换数据
  9. 机器学习深度学习入门学习资料大全(一)
  10. android 点赞 1,Android自定义FloatingText仿点赞+1特效
  11. 计算机操作系统学习笔记
  12. led灯条串联图_一种串联控制LED灯条的制作方法
  13. 云服务器通过域名访问自己的项目
  14. s开头wifi测试软件,应对5G WiFi 新一代无线测试的挑战
  15. 蔡琴 经典收藏APE
  16. html怎么设置图片宽高比,CSS力图像调整尺寸和保持高宽比
  17. C++ 常用生僻函数小记
  18. 构建能源物联网,助力电力物联网数据服务
  19. 2023年必须收藏的python兼职网站大全
  20. CiteSpace多数据库一键去重-知网、万方、维普数据库

热门文章

  1. 【Kafka】Flink 消费 kafka 部分 分区 一直不提交 offset
  2. 【hadoop】Hadoop Output directory file output already exists
  3. 【Elasticsearch】Resizing Elasticsearch shards for fun and profit
  4. 【Elasticsearch】java 客户端 获取 termvectors 词频 统计
  5. 【Lucene】lucene 视频教程 笔记
  6. spark学习-70-源代码:Endpoint模型介绍(2)-启动流程
  7. java将字符串转小写转大写字母_输入一个字符串,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字...
  8. 玩转SpringCloud Security OAuth2资源授权动态权限扩展
  9. eclipse上的.properties文件中文编辑显示问题
  10. linux mysql 备份脚本_linux下mysql备份脚本