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中的一些类型转换函数小结
Feb 10 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Python3常见函数range()用法详解
Dec 30 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
Python使用for生成列表实现过程解析
Sep 22 Python
python基于openpyxl生成excel文件
Dec 23 Python
python Scrapy爬虫框架的使用
Jan 21 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
Python答题卡识别并给出分数的实现代码
Jun 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
mysql 性能的检查和优化方法
2009/06/21 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python实现的矩阵类实例
2017/08/22 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
python 读入多行数据的实例
2018/04/19 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
pycharm显示远程图片的实现
2019/11/04 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
PHP面试题及答案二
2015/05/23 面试题
房地产融资计划书
2014/01/10 职场文书
机关会计岗位职责
2014/04/08 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
2014年团支书工作总结
2014/11/14 职场文书
兵马俑导游词
2015/02/02 职场文书
未中标通知书
2015/04/17 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书