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中列表生成式和生成器的区别
Aug 03 Python
python实现最长公共子序列
May 22 Python
python实现图片筛选程序
Oct 24 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Python爬虫爬取杭州24时温度并展示操作示例
Mar 27 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
python实现语音常用度量方法的代码详解
May 25 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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
浅析php创建者模式
2014/11/25 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
AngularJS 面试题集锦
2016/09/06 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
Node.js实现简单管理系统
2019/09/23 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
Python netmiko模块的使用
2020/02/14 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫