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 31 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
python实现NB-IoT模块远程控制
Jun 20 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
python区块及区块链的开发详解
Jul 03 Python
pytorch 常用线性函数详解
Jan 15 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
Python基本知识点总结
Apr 07 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面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
Python是怎样处理json模块的
2020/07/16 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
Intersport西班牙:在线体育商店
2019/11/06 全球购物
李开复演讲稿
2014/05/24 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技