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中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
Python实现的栈(Stack)
Jan 26 Python
python实现简易版计算器
Jun 22 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 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
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
python3实现随机数
2018/06/25 Python
Python中常用的内置方法
2019/01/28 Python
使用pip安装python库的多种方式
2019/07/31 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
爱国主义演讲稿
2014/05/07 职场文书
新闻学专业求职信
2014/07/28 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
导游词之山西-五老峰
2019/10/07 职场文书