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 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
python实现人脸识别代码
Nov 08 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
python 实现矩阵按对角线打印
Nov 29 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
keras 多gpu并行运行案例
Jun 10 Python
Django migrate报错的解决方案
May 20 Python
Python中np.random.randint()参数详解及用法实例
Sep 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获取淘宝分类id示例
2014/01/16 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
js右键菜单效果代码
2007/07/21 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
详解JS预解析原理
2020/06/16 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
python实现爬取百度图片的方法示例
2019/07/06 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
Python 实现一个简单的web服务器
2021/01/03 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
医科学校毕业生自荐信
2013/11/09 职场文书
光荣入党自我鉴定
2014/01/22 职场文书
八一慰问活动方案
2014/02/07 职场文书
幼儿园安全责任书
2014/04/14 职场文书
球队口号
2014/06/18 职场文书
维稳承诺书
2015/01/20 职场文书
酒店开业主持词
2015/07/02 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
python关于集合的知识案例详解
2021/05/30 Python
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库