直接上代码:

#快速排序
#coding: utf-8
def quicksort(a,left,right):
if(left<right):
mid = partition(a,left,right)
quicksort(a,left,mid-1)
quicksort(a,mid+1,right) def partition(a,left,right):
x = a[right]
i = left-1 #初始i指向一个空,保证0到i都小于等于 x
for j in range(left,right): #j用来寻找比x小的,找到就和i+1交换,保证i之前的都小于等于x
if(a[j]<=x):
i = i+1
a[i],a[j] = a[j],a[i]
a[i+1],a[right] = a[right],a[i+1] #0到i 都小于等于x ,所以x的最终位置就是i+1
return i+1 while(True):
try:
s = input("输入待排序数组:\n") #待排数组
l =s.split()
a = [int(t) for t in l]
quicksort(a,0,len(a)-1)
print ("排序后:")
for item in a:
print(item,end=' ')
print("\n")
except:
break

随机快速排序:

#随机快速排序
#coding: utf-8
import random
def random_quicksort(a,left,right):
if(left<right):
mid = random_partition(a,left,right)
random_quicksort(a,left,mid-1)
random_quicksort(a,mid+1,right) def random_partition(a,left,right):
t = random.randint(left,right) #生成[left,right]之间的一个随机数
a[t],a[right] = a[right],a[t]
x = a[right]
i = left-1 #初始i指向一个空,保证0到i都小于等于 x
for j in range(left,right): #j用来寻找比x小的,找到就和i+1交换,保证i之前的都小于等于x
if(a[j]<=x):
i = i+1
a[i],a[j] = a[j],a[i]
a[i+1],a[right] = a[right],a[i+1] #0到i 都小于等于x ,所以x的最终位置就是i+1
return i+1 while(True):
try:
s = input("输入待排序数组:\n") #待排数组
l =s.split()
a = [int(t) for t in l]
random_quicksort(a,0,len(a)-1)
print ("排序后:")
for item in a:
print(item,end=' ')
print("\n")
except:
break

Python 实现快速排序和随机快速排序的更多相关文章

  1. Python之排序算法:快速排序与冒泡排序

    Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...

  2. Python实现排序算法之快速排序

    Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它 ...

  3. python生成随机数、随机字符串

    python生成随机数.随机字符串 import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print ...

  4. LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)

    关于局部敏感哈希算法.之前用R语言实现过,可是由于在R中效能太低.于是放弃用LSH来做类似性检索.学了python发现非常多模块都能实现,并且通过随机投影森林让查询数据更快.觉得能够试试大规模应用在数 ...

  5. Python 冒泡排序、归并排序、快速排序

    冒泡排序 原理: 代码: def bubble_sort2(arr):for j in range(len(arr) - 1, 0, -1): # [n-1, n-2, ....2, 1]for i ...

  6. Python 算法(1) 快速排序

    快速排序(quickSort) 快排的思想:首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序. 百度百 ...

  7. 八大排序算法的python实现(四)快速排序

    代码: #coding:utf-8 #author:徐卜灵 #交换排序.快速排序 # 虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤.因此我的对快速排序作了进一步的说明: ...

  8. python排序算法-冒泡和快速排序,解答阿里面试题

    ''常见的排序算法\ 插入排序/希尔排序/直接排序/堆排序 冒泡排序/快速排序/归序排序/基数排序 给定一个列表,将这个列表进行排序,要求:> 时间复杂度要小于O(n^2) 复杂度:1.时间复杂 ...

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

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

随机推荐

  1. leetcode-回溯③

    题77 回溯: class Solution: def combine(self, n: int, k: int) -> List[List[int]]: res = [] def backtr ...

  2. webstorm常见快捷方法与遇到的一些问题

    1.动态添加标签快捷写法 例子:生成10个文字按顺序编号的class为task-item的div 2.win10下webstorm的terminal无法输入? 打开一个 cmd.exe,标题栏 右键 ...

  3. 官网下载 Linux 上需要的 MySQL的步骤

    1.输入MySQL 官网地址  https://dev.mysql.com/  选择 download ->Community->MySQL Community Server 点击 MyS ...

  4. 【安装】Mac rabbitMQ

    安装 brew install rabbitmq 目录  cd /usr/local/Cellar/rabbitmq/3.7.4/sbin 插件 sudo ./rabbitmq-plugins ena ...

  5. (转)虚拟IP原理

    转:http://blog.csdn.net/whycold/article/details/11898249 高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划 ...

  6. shell脚本实现GoDaddy中IPv6的动态域名解析(DDNS)_可在路由中运行

    首先谈一下个人的需求,家里路由拿到了运营商的外网ipv6地址,于是想着将路由的各种服务通过DDNS放到外网上来,这才有下面的动态域名解析折腾.废话不多说,进入正题. 1.首先在godaddy中注册域名 ...

  7. AsyncAwait 学习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. Linux下同一目录内文件和目录为什么不能同名?

    问题描述: 如果事先有叫‘A’的文件夹存在,则不允许建立叫‘A’的文件: 同理若先有叫‘b’的文件存在,一样不允许建立叫‘b’的文件夹. 原因很简单,因为Linux下一切都是文件,一个目录归根到底还是 ...

  9. 剑指offer——01数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  10. 20140401 cudaHOG代码

    1.cudaHOG代码(删减没有必要的目录) cudaHOGDetect需要boost库:boost_date_time-vc100-mt-1_40.lib VC++目录->附加库目录D:\bo ...