python 三行代码实现快速排序

最近在看 python cookbook , 里面的例子很精彩,这里就帮过来,做个备忘录

主要利用了行数的递归调用和Python的切片特性,解释一下每行代码的含义:

  • 第1行: #coding:utf-8 指定utf-8 编码
  • 第2行:定义函数名和参数
  • 第3行: 判断列表长度是否小于等于1, 如果小于等于1,直接返回列表
  • 第4行:返回递归函数拼接的列表,[lt for lt in L[1:] if lt <= L[0]] 列表推导表达式,返回一个比 L[0] 小的列表,[ge for ge in L[1:] if ge >= L[0]], 返回一个比L[0] 大的列表, 再加上L[0] 就构成完整的列表

第四行是最关键的,返回三个部分:

  1. 比列表第一个元素小的所有元素列表递归调用
  2. 第一个元素
  3. 比列表第一个元素大的所有元素列表递归调用

递归调用部分,处理过程都是一样的,用列表第一个参数作为中间值,把列表分为两部分

最后两行是测试代码,生成一个无序列表,打印排序结果。

#coding:utf-8
def qsort(L):
if len(L) <= 1: return L
return qsort([lt for lt in L[1:] if lt < L[0]]) + L[0:1]+ \
qsort([ge for ge in L[1:] if ge >= L[0]]) iList = [3,14,2,12,9,33,99,35] print qsort(iList)

python 三行代码实现快速排序的更多相关文章

  1. python三行代码实现快速排序

    def quick_sort(array): if len(array) < 2: return array return quick_sort([lt for lt in array[1:] ...

  2. Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡.选择.插入.希尔.归并),因为快速排序的重要性,所以今天将单独为大家介绍一下快速排序! 一.算法介 ...

  3. python numpy 三行代码打乱训练数据

    今天发现一个用 numpy 随机化数组的技巧. 需求 我有两个数组( ndarray ):train_datasets 和 train_labels.其中,train_datasets 的每一行和 t ...

  4. python 实现冒泡排序与快速排序 遇到的错误与问题

    今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...

  5. 三行代码辨别PS

    三行代码辨别PS 博主的好友动态和朋友圈经常出现各种图片,博主很想知道这些图片有没有经过PS,于是选择了技术流-- 代码 先放代码为敬,返回结果为TRUE表示进行过PS. isPS.py #!/usr ...

  6. flask跨域请求三行代码搞定

    flask跨域请求三行代码就可以搞定.但是请注意几点: 第一:只能返回json格式数据,比如list.ndarray等都不可以 第二:返回的对象必须是是字符串.元组.响应实例或WSGI可调用. pyt ...

  7. 30个物联网传感器小实验:三行代码点亮LED灯

    30个物联网传感器小实验:三行代码点亮LED灯 三行代码点亮LED灯 LED灯闪烁 LED灯调亮度 LED淡入淡出 不写一行代码点亮LED灯 全彩RGB灯 面包板 30个物联网传感器小实验:三行代码点 ...

  8. 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。

    (转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/lingu ...

  9. Java三行代码搞定MD5加密,测试5c短信网关的demo

    看到之前项目中,关于MD5加密的足足写了一个辅助类. 其实在Java中大部分都帮你实现好了,完成MD5加密,主要就三行代码: /** * 对字符串md5加密 * * @param str * @ret ...

随机推荐

  1. (2.1)Smali系列学习之基础语法

    一.什么是Smali?Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种dex格式文件的汇编器,反汇编器.其语法是一种宽松式的Jasmin/dedexer语法, ...

  2. 真正理解红黑树,真正的(Linux内核里大量用到的数据结构,且常被二货问到)

    作为一种数据结构.红黑树可谓不算朴素.由于各种宣传让它过于神奇,网上搜罗了一大堆的关于红黑树的文章,不外乎千篇一律,介绍概念,分析性能,贴上代码,然后给上罪恶的一句话.它最坏情况怎么怎么地...    ...

  3. 新型I/O架构引领存储之变(二)

    新型I/O架构引领存储之变(二) 作者:廖恒 众所周知,支持存储及网络I/O服务的接口协议有很多种.比方,以太网及Infiniband接口都支持採用iSCSI协议来实现存储业务,它们也因而成为了ser ...

  4. 蓝牙(CoreBluetooth)-概述

    蓝牙(CoreBluetooth)-概述 通过此框架可以让你的Mac和iOS应用程序与外部蓝牙设备通信 外部设备: 就是需要通过iOS App控制器的其他设备: 例如:心率检测仪.数字温控器 蓝牙通讯 ...

  5. PHP学习笔记(15)PDO数据库操作+AJAX无刷新技术删除用户

    pdo.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. python - __str__ 和 __repr__

    内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容.类型.数值属性等信息.str()函数得到的字符串可读性好(故 ...

  7. Unix系统编程(二)open的练习

    在上一篇中学习了一下open函数的基本用法,这里就要练习一下.计算机就是要实践嘛. 用open创建一个文件 #include <sys/types.h> #include <sys/ ...

  8. Jquery Deferred 详解

    近期由于公司项目主要由我来负责前端,所以打算优化一下代码.在jquery 里面有个Deferred的对象.为了研究这个也看了不少资料,其中阮一峰的博客写的很详细,这里转载一下. 一.什么是deferr ...

  9. I/O的控制方式——查询,中断,dma(转)

    早期,I/O串行,查询方式.发展,I/O并行,两种方式其一是中断方式,其二是dma方式,使得外部设备能直接与主存储器信息交换,减轻了cpu的工作量.技术继续发展,出现通道结构,实质上为高性能的dma控 ...

  10. SSH初体验系列--Hibernate--3--单值与分页查询

    前言 查询可以按结果集分2类:单个结果 和 数组 ; 其中,返回数组,在这个 数据库数据量随随便便就能上几十万的互联网时代大背景下,常常需要做分页处理, 所以这里就说一下单值和分页, 算是对上一篇&q ...