Python实现桶排序与快速排序算法结合应用示例


Posted in Python onNovember 22, 2017

本文实例讲述了Python实现桶排序与快速排序算法结合应用的方法。分享给大家供大家参考,具体如下:

#-*- coding: UTF-8 -*-
import numpy as np
from QuickSort import QuickSort
def BucketSort(a, n):
  barrel = {}
  for i in xrange(0,n):
    barrel.setdefault(i, [])
  min = np.min(a)
  max = np.max(a)
  for x in a:
    for i in xrange(0,n-1):
      if x >= min +i* (max - min)/n and x < min +(i +1) * (max - min)/n:
        barrel[i].append(x)
      elif i == n-2 and x >= min +(i +1) * (max - min)/n:
        barrel[i+1].append(x)
  k = 0
  for i in xrange(0,n):
    if len(barrel[i]) != 0:
      arr = np.array(barrel[i])
      QuickSort(arr, 0, len(barrel[i]) -1)
      for x in arr:
        a[k] = x
        k += 1
if __name__ == '__main__':
  a = np.random.randint(0, 100, size = 10)
  print "Before sorting..."
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"
  BucketSort(a, 10)
  print "After sorting..."
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"

快速排序QuickSort:

#-*- 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实现桶排序与快速排序算法结合应用示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
用Python计算三角函数之acos()方法的使用
May 15 Python
python实现装饰器、描述符
Feb 28 Python
解读python logging模块的使用方法
Apr 17 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
Golang GBK转UTF-8的例子
Aug 26 Python
详解python中docx库的安装过程
Nov 08 Python
python实现的分层随机抽样案例
Feb 25 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 #Python
python不换行之end=与逗号的意思及用途
Nov 21 #Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 #Python
pycharm远程调试openstack代码
Nov 21 #Python
Pycharm远程调试openstack的方法
Nov 21 #Python
pycharm远程调试openstack的图文教程
Nov 21 #Python
Python实现的归并排序算法示例
Nov 21 #Python
You might like
NOT NULL 和NULL
2007/01/15 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
树结构之JavaScript
2017/01/24 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python set集合类型操作总结
2014/11/07 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Python BS4库的安装与使用详解
2018/08/08 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python如何将装饰器定义为类
2020/07/30 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
在Python中实现字典反转案例
2020/12/05 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
会计电算化个人求职信范文
2014/01/24 职场文书
教师节活动总结
2014/08/29 职场文书
小学生手册家长意见
2015/06/03 职场文书
化验室安全管理制度
2015/08/06 职场文书
小学体育教学随笔
2015/08/14 职场文书
导游词之南京中山陵
2019/11/27 职场文书