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获取文件ssdeep值的方法
Oct 05 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 Python
python3.6数独问题的解决
Jan 21 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
Python发展简史 Python来历
May 14 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
Django数据库迁移常见使用方法
Nov 12 Python
python的数学算法函数及公式用法
Nov 18 Python
Python 中Operator模块的使用
Jan 30 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
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
Python subprocess模块详细解读
2018/01/29 Python
python实现远程控制电脑
2019/05/23 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
小学生自我鉴定
2013/10/12 职场文书
考试违纪检讨书
2014/02/02 职场文书
2014年高考决心书
2014/03/11 职场文书
道路建设实施方案
2014/03/18 职场文书
保密承诺书范文
2014/03/27 职场文书
团日活动总结
2014/04/28 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
公积金具结保证书
2015/05/11 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python
详解flex:1什么意思
2022/07/23 HTML / CSS