直接上代码:

#快速排序
#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. BCZM : 2.1

    1.问题描述 实现一个函数,输入一个无符号整数,输出该数二进制中的1的个数.例如把9表示成二进制是1001,有2位是1,因此如果输入9,该函数输出2 2.分析与解法 解法1:利用十进制和二进制相互转化 ...

  2. IDEA使用maven插件打jar包流程

    idea使用maven插件打jar包步骤以及遇到的问题 idea自带了maven工具,idea右边点击maven选项: 一.在pom中添加插件,直接复制就好,如下选项 <plugin> & ...

  3. delphi RichView的使用介绍

    RichView 组件 由 9 个组件模块组成,分别是: 1.TRVStyle:主要是定义RICHVIEW样式,定义后,其它RIHCVIEW都可以引用此样式.  2.TRichView :主要用于显示 ...

  4. Oracle实现行转列+Mybatis

    1.需求 报表需要动态展示某几个公司分别在几个月内销售额情况(前端表头月份是动态的,月时间段是前端参数来选择的,最大为12个月), 页面展示如下 Oracle数据库中数据如下: 可以看到一个公司的月份 ...

  5. 7.12模拟T2(套路容斥+多项式求逆)

    Description: \(n<=10,max(w)<=1e6\) 题解: 考虑暴力,相当于走多维格子图,不能走有些点. 套路就是设\(f[i]\)表示第一次走到i的方案数 \(f[i] ...

  6. 优化剪枝搜索——牛客多校第二场F

    试了很多种爆搜和剪枝,最后发现还是状压的比较好用 #include <bits/stdc++.h> using namespace std; // #define IO #define f ...

  7. 移动端图片轮播效果:depth模式总结

    最近公司app改版首页增加了一处轮播图效果,但是跟普通的轮播效果不同,是类似于下图的样式,找了一些兼容移动端的插件以及jQuery源码,总结一下使用心得: 1:jquery源码:缺点是在手机端的滑动很 ...

  8. NXOpenC#_Training_cam(cn)【转载】

  9. 标准H.460公私网穿越视频解决方案

    一.概述 H.460协议是一种网络通信协议,主要用于音视频的网络穿越,可以解决客户私网到公网,以及公网到私网的互相通信. 大连羽化集团是中国较大的零售业集团之一.目前羽化集团百货店已达20多家,营业面 ...

  10. ftp和ssh登录缓慢的解决办法

    在垃圾邮件和短信盛行的今天,邮件和短信,拦截与反向域名解析的方式,有效的防止了垃圾短信.邮件的入侵.Vsfpd和sshd同样利用了反向域名解析这一功能(默认开启),.在客户端向server端请求访问时 ...