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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
python中sys.argv函数精简概括
Jul 08 Python
浅谈python中get pass用法
Mar 19 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
python将字母转化为数字实例方法
Oct 04 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
Python实现转换图片背景颜色代码
Apr 30 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 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
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
php Calender(日历)代码分享
2014/01/03 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
使javascript也能包含文件
2006/10/26 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
Ionic快速安装教程
2016/06/03 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
Nuxt页面级缓存的实现
2020/03/09 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
python计算圆周率pi的方法
2015/07/11 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
办公室主任职责范本
2014/03/07 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
残疾人小组计划书
2014/04/27 职场文书
教室标语大全
2014/06/21 职场文书
2014年食堂工作总结
2014/11/20 职场文书