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中if __name__ == &quot;__main__&quot;详细解释
Oct 21 Python
Python中多线程及程序锁浅析
Jan 21 Python
初步理解Python进程的信号通讯
Apr 09 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
php防盗链的常用方法小结
2010/07/02 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
小程序红包雨的实现示例
2019/02/19 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
书单|人生苦短,你还不用python!
2017/12/29 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Django数据库操作之save与update的使用
2020/04/01 Python
Pycharm修改python路径过程图解
2020/05/22 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
法雷奥SQA(electric)面试问题
2016/01/23 面试题
毕业生护理专业个人求职信范文
2014/01/04 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python