python实现高速排序算法(两种不同实现方式)
# -*- coding: utf-8 -*-
"""
Created on Fri May 16 17:24:05 2014 @author: lifeix
""" #高速排序
import sys
import random length = 30 def qsort(arr,left,right):
lp = left
rp = right
if lp == rp:return
while True:
while arr[lp] >= arr[right] and rp > lp:
lp = lp +1
while arr[rp] <= arr[right] and rp > lp:
rp = rp - 1
arr[lp],arr[rp] = arr[rp],arr[lp]
if lp >= rp:
break
arr[rp],arr[right] = arr[right],arr[lp]
if left < lp:
qsort(arr,left,lp - 1)
qsort(arr,rp,right) def main():
arr = []
sys.setrecursionlimit(100000)
for i in range(length):
arr.append(random.randint(0,10000))
qsort(arr,0,length-1)
print arr
if __name__ == '__main__':
for i in range(10):
main()
#高速排序另外一种实现
def quickSort(arr,p,r):
if p < r:
q = partition(arr,p,r)
quickSort(arr,p,q - 1)
quickSort(arr,q+1,r) def partition(arr,p,r):
x = arr[r]
i = p
for j in range(p,r):
if arr[j] < x:
arr[i],arr[j] = arr[j],arr[i]
i = i + 1
arr[i],arr[r] = arr[r],arr[i]
return i if __name__ == '__main__':
arr = [1,3,89,2,0,78,98,23,56,100]
quickSort(arr,0,len(arr) - 1)
print arr
python实现高速排序算法(两种不同实现方式)的更多相关文章
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- Python实现常用排序算法
Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...
- 具体解释Redis源代码中的部分高速排序算法(pqsort.c)
看标题.你可能会疑惑:咦?你这家伙.怎么不解说完整的快排,仅仅讲一部分快排---.- 哎,冤枉. "部分快排"是算法的名字.实际上本文相当具体呢.本文差点儿与普通快排无异.看懂了本 ...
- 高速排序算法C++实现
//quick sort //STL中也有现成的高速排序算法.内部实现採用了下面技巧 //1)枢轴的选择採取三数取中的方式 //2)后半段採取循环的方式实现 //3)高速排序与插入排序结合 #incl ...
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- 「python」: arp脚本的两种方法
「python」: arp脚本的两种方法 第一种是使用arping工具: #!/usr/bin/env python import subprocess import sys import re de ...
- java:高速排序算法与冒泡排序算法
Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /** * * @Description: * @author:cuiyaon ...
- java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)
当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...
- python中执行shell的两种方法总结
这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包 ...
随机推荐
- Python 2:str.title()(使字符串每个单词首字母大写)
name = "hello,world! hello,python!" print(name.title()) #单词首字母大写 运行结果将会是:Hello,World!Hello ...
- Java 介绍比较全面的一遍文章
Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称.用Java实现的HotJava浏览器(支持Java ...
- Vue跨域访问,axios&cors
先安装node.js和npm,这个不用说了,直接在创建vue项目,然后实践一下跨域访问. 如果npm安装较慢,可安装淘宝镜像,执行下面命令: npm install -g cnpm --registr ...
- angular js 公告墙
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- ie8及其以下版本兼容性问题之文本省略
1. 单行文本省略 单行文本省略适用于文本超出内容显示区,则在末尾显示省略号 1.1 普通文本超出省略 普通文本超出显示省略号,示例: .p{ height: 30px line-height: 30 ...
- C# Socket通讯 本机多网卡,指定网卡通讯
IPAddress ip = IPAddress.Parse("192.168.0.188"); IPAddress IPLocal = IPAddress.Parse(" ...
- CNN结构:用于检测的CNN结构进化-分离式方法
前言: 原文链接:基于CNN的目标检测发展过程 文章有大量修改,如有不适,请移步原文. 参考文章:图像的全局特征--用于目标检测 目标的检测和定位中一个很困难的问题是,如何从数以万计的候选 ...
- PHP安装环境搭建
一. 安装PHP运行服务器 xampps-x64 二.安装PHP程序编辑软件(Zend Studo需要破解) 安装后打开,再关闭 把com.zend.php.core_10.6.0.v20140128 ...
- ABP(http://www.aspnetboilerplate.com/)下载初始化
官网:http://www.aspnetboilerplate.com/ 下载 下载完成后用vs2015打开,是2015,低版本打开可能会出现一些问题 生成项目,Nuget会自动下载需要的类库 ABP ...
- Memcached 之分布式算法原理
memcached并不像mongodb一样可以配置多个节点,并且节点之间可以”自动分配数据“,即相互通信,所以我们在做memcache分布式集群的时候要有一个算法来保证当一台memcache服务器宕机 ...