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 装饰器使用详解
Jul 29 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
python tornado修改log输出方式
Nov 18 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
Python列表如何更新值
May 27 Python
Python编写单元测试代码实例
Sep 10 Python
python 线程的五个状态
Sep 22 Python
Python Matplotlib绘制条形图的全过程
Oct 24 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
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
js 文件引入实现代码
2010/04/23 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
使用Python实现画一个中国地图
2019/11/23 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
什么是Python包的循环导入
2020/09/08 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
数控技术专业推荐信
2013/11/01 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
春节联欢会策划方案
2014/05/16 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
员工教育培训协议书
2014/09/27 职场文书
2014年妇联工作总结
2014/11/21 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
Python IO文件管理的具体使用
2022/03/20 Python