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正则表达式使用经典实例
Jun 21 Python
python字典键值对的添加和遍历方法
Sep 11 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python实现任意位置文件分割的实例
Dec 14 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python os模块常用的29种方法使用详解
Jun 02 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python学习笔记之多进程
Aug 06 Python
如何用python识别滑块验证码中的缺口
Apr 01 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
使用URL传输SESSION信息
2015/07/14 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python中元类用法实例
2014/10/10 Python
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
Python ldap实现登录实例代码
2016/09/30 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
机械专业应届生求职信
2013/12/12 职场文书
党支部综合考察材料
2014/05/19 职场文书
服务标语大全
2014/06/18 职场文书
教师节活动总结
2014/08/29 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书