#-*- coding: UTF-8 -*-
import numpy as np def Partition(a, i, j):
x = a[i] #将数组的第一个元素作为初始基准位置
p = i #同时记录下该元素的位置
while i < j:
while i < j and a[j] >= x:
j -= 1
while i < j and a[i] <= x:
i += 1
if i != j:
a[i], a[j] = a[j], a[i] #交换a[i]与a[j]
a[p], a[i] = a[i], a[p] #将a[p]与a[i]进行交换
p = i #得到分隔位置 return p def QuickSort(a, i, j):
if i < j:
p = Partition(a, i, j)
QuickSort(a, i, p-1)
QuickSort (a, p+1, j) if __name__ == '__main__': a = np.random.randint(0, 100, size = 100)
print "Before sorting..." print "---------------------------------------------------------------"
print a
print "---------------------------------------------------------------"
QuickSort(a, 0, a.size - 1)
print "After sorting..."
print "---------------------------------------------------------------"
print a
print "---------------------------------------------------------------"

快速排序算法-python实现的更多相关文章

  1. python实现快速排序算法

    快速排序算法又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出.在平均状况下, 排序n个项目要O(nlogn)次比较.在最坏状况下则需要O(n*2) ...

  2. $用python实现快速排序算法

    本文主要介绍用python实现基本的快速排序算法,体会一下python的快排代码可以写得多么简洁. 1. 三言两语概括算法核心思想 先从待排序的数组中找出一个数作为基准数(取第一个数即可),然后将原来 ...

  3. python算法与数据结构-快速排序算法(36)

    一.快速排序的介绍 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外 ...

  4. 排序算法之快速排序的python实现

    通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序. 快速排序算法的工作原理如下: 1. 从数列中挑出一个元 ...

  5. 使用Python实现的4种快速排序算法

    快速排序算法,总体来说就是选一个基准值,把小于基准值的分一拨,把大于基准值的分到另一拨,然后递归. 有区别的是,分区算法有差异,最直接的是,选个基准值,定义两个列表(小值分区less和大值分区grea ...

  6. 常见排序算法-Python实现

    常见排序算法-Python实现 python 排序 算法 1.二分法     python    32行 right = length-  :  ]   ):  test_list = [,,,,,, ...

  7. 排序算法-python版

    总结了一下常见集中排序的算法 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成 ...

  8. 数据结构与算法-Python/C(目录)

    第一篇 基本概念 01 什么是数据结构 02 什么是算法 03 应用实例-最大子列和问题 第二篇 线性结构 01 线性表及其实现 02 堆栈 03 队列 04 应用实例-多项式加法运算 05 小白专场 ...

  9. 十大经典排序算法(Python,Java实现)

    参照:https://www.cnblogs.com/wuxinyan/p/8615127.html https://www.cnblogs.com/onepixel/articles/7674659 ...

随机推荐

  1. iptables详解(10):iptables自定义链

    前文中,我们一直在定义规则,准确的说,我们一直在iptables的默认链中定义规则,那么此处,我们就来了解一下自定义链. 你可能会问,iptables的默认链就已经能够满足我们了,为什么还需要自定义链 ...

  2. notepad配合正则表达式处理文本

    <option value="irs01.com">irs01.com</option><option value="hdslb.com&q ...

  3. 【转】OpenWRT开发自定义应用方法

    [转]OpenWRT开发自定义应用方法 转自:http://blog.csdn.net/rudyn/article/details/38616783 OpenWRT编译成功完成后,所有的产品都会放在编 ...

  4. APUE学习笔记——10 信号

    信号的基本概念     信号是软件中断,信号提供了解决异步时间的方法.     每一中信号都有一个名字,信号名以SIG开头. 产生信号的几种方式     很多条件可以产生信号:     终端交互:用户 ...

  5. APUE学习笔记——4.2结构体 struct stat 及其相关函数介绍

    以下不少内容来自man手册 结构体struct stat         结构体struct stat用于保存文件相关的所有信息.         struct stat的基本成员如下所示 struc ...

  6. Tornado 异步非阻塞

    1 装饰器 + Future 从而实现Tornado的异步非阻塞 class AsyncHandler(tornado.web.RequestHandler): @gen.coroutine def ...

  7. Android.mk编译的写法

    更多Android.mk的 用法见 :http://blog.csdn.net/fengbingchun/article/details/38705519 如何修改Android.mk 为Androi ...

  8. RxJava 1.x 笔记:过滤型操作符

    我真的是奇怪,上下班的路上看书.看文章学习的劲头特别大,到了周末有大把的学习时间,反而不珍惜,总想打游戏,睡前才踏踏实实地写了篇文章,真是服了自己! 本文内容为 RxJava 官方文档 学习笔记 作者 ...

  9. js 由快到慢的执行

    let t=0; for(var i=0;i<len;i++){ (function (t) { $timeout(function(){ console.log(t); },t); })(t) ...

  10. Graham扫描法

    Graham扫描法求凸包的模板 运行之后可以得到存有凸包顶点的栈s和栈顶指针top,n代表总点数 这个模板我当时调了很久,主要难点有两个,一个是正确的极角排序,一个是出栈入栈的细节操作,逆时针扫描,这 ...