Python简单的实现快速排序

常见的快排排序:快排实现原理,可以更好理解快排思想

def quick_sort(alist, start, end):
    if start >= end:
        return
    mid = alist[start]
    left = start
    right = end
    # left与right未重合,就向中间移动
    while left < right:
        while left < right and alist[right] >= mid:
            right -= 1
        alist[left] = alist[right]
        while left < right and alist[left] < mid:
            left += 1  # a_list = [1, 12, 22, 34, 21, 4, 6, 8, 11, 54, 36, 7, 3, 0, 60, 62, 63]
        alist[right] = alist[left]
    # 从循环退出后,left与right相遇,即left==right
    alist[left] = mid
    # 对左边部分执行快速排序
    quick_sort(alist, start, left-1)
    # 对右边部分执行快速排序
    quick_sort(alist, left+1, end)

a_list = [1, 12, 22, 34, 21, 4, 6, 8, 11, 54, 36, 7, 3, 0, 60, 62, 63]
quick_sort(a_list, 0, len(a_list) - 1)
print(a_list)

输出结果时,我发现这种方法直接改变了原有列表(使用的Python3.6)

使用列表推导式和快速排序的递归思想,实现快排:

def qucik_sort(alist):
    if len(alist) <= 1:
        return alist
    return qucik_sort([i for i in alist[1:] if i < alist[0]]) + alist[0:1] + qucik_sort([i for i in alist[1:] if i >= alist[0]])

ls = [22, 21, 34, 65, 12, 89, 3, 9, 66]
print(qucik_sort(ls))
print(ls)

理解快速排序思想之后,这个方法,使用的代码非常少

而且该方法不改变原有的列表

原文地址:https://www.cnblogs.com/shenzhuang/p/10368345.html

时间: 2024-07-30 12:14:52

Python简单的实现快速排序的相关文章

Python简单操作笔记

Python 类型转换 str(),repr()|format() : 将非字符类型转成子串 int() : 转为整形 float() : 转为浮点型 list(s) : 将字串s转成列表 tuple(s) : 将字串s转成元组 set(s) : 将字串s转成集合 frozenset(s) : 将字串s转成不可变集合 dict(s) : 创建字典 其d必须是(key,value)的元组序列; chr(x) : 将整形转成字符 ord(x) : 将字符转成整形 hex(x) : 将整形转换成16进

Python简单实现基于VSM的余弦相似度计算

在知识图谱构建阶段的实体对齐和属性值决策.判断一篇文章是否是你喜欢的文章.比较两篇文章的相似性等实例中,都涉及到了向量空间模型(Vector Space Model,简称VSM)和余弦相似度计算相关知识.        这篇文章主要是先叙述VSM和余弦相似度相关理论知识,然后引用阮一峰大神的例子进行解释,最后通过Python简单实现百度百科和互动百科Infobox的余弦相似度计算. 一. 基础知识 第一部分参考我的文章: 基于VSM的命名实体识别.歧义消解和指代消解 第一步,向量空间模型VSM 

Python 简单爬虫

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import os import time import webbrowser as web import random count = random.randint(20,40) j = 0 while j < count:     i = 0     while i <= 5:         web.open_new_tab('http://www.cnblogs.com/evilxr/p/37642

python网络爬虫入门(二)——用python简单实现调用谷歌翻译

最近在看国外的文档,有些生词不认识.就用谷歌翻译来理解,用着用着闲来无事就按F12查看了下页面的源代码.发现可以用python简单的实现下谷歌翻译的页面功能.于是先上网搜下有没有类似的文章博客,发现几篇不错的,于是参考其他代码与自己的思路,简单的实现了下翻译的功能,代码如下: import re import urllib,urllib2 #----------模拟浏览器的行为,向谷歌翻译发送数据,然后抓取翻译结果,这就是大概的思路------- def Gtranslate(text): #t

【美妙的Python之中的一个】Python简单介绍及环境搭建

美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:          Python英文意思为蟒蛇,故又称为蟒蛇语言,在图标设计上有所体现,贵铎·范·罗萨姆(Guido van Rossum)于1989年创立.Python的特质,简单,优雅,健壮,继承传统编程语言的强大性与通用性,同一时候兼具简单脚本的简单性.         Python的哲学:仅仅用一种方法,最好是仅仅有一种方法

python简单模拟:把树存储在数据表中

在数据库中建立一个表,有Id, fatherId, value 三个字段,就可以存储一个树. 如何把该表中的数据以树的形式呈现出来,下面小弟用python简单模拟一下. 初学python,请大家多多指点.另外非常感谢http://www.cnblogs.com/lzyzizi/对小弟的指点. 运行结果: A-1 B-1 C-1 D-1 E-1 E-2 C-2 B-2 C-3 C-4 源代码: 1 #!user/bin/python 2   3  class noteModel: 4 def __

Notepad++搭建Python简单开发环境(nppexec插件版)

Notepad++搭建Python简单开发环境(nppexec插件版)  原地址:http://blog.sina.com.cn/s/blog_55eb21950101daty.html 1.打开Notepad++,选择菜单Plugin(插件)->Plugin Manager->Show Plugin Manager,打开插件管理器,在”Available”选项卡中找到NppExec2.勾选NppExec,然后Install,下载完成后,一切Yes,OK3.重新启动Notepad++,NppE

亲身试用python简单小爬虫

前几天基友分享了一个贴吧网页,有很多漂亮的图片,想到前段时间学习的python简单爬虫,刚好可以实践一下. 以下是网上很容易搜到的一种方法: 1 #coding=utf-8 2 import urllib 3 import re 4 5 def getHtml(url): 6 page = urllib.urlopen(url) 7 html = page.read() 8 return html 9 10 def getImg(html): 11 reg = r'src="(.+?\.jpg)

gtk+3.0的环境配置及基于gtk+3.0的python简单例子

/*********************************************************************  * Author  : Samson  * Date    : 06/25/2014  * Test platform:  *              Mint 15  *              GNU bash, version 4.2.45  * *************************************************