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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Pandas中resample方法详解
Jul 02 Python
python3 反射的四种基本方法解析
Aug 26 Python
Python实现元素等待代码实例
Nov 11 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
如何解决pycharm调试报错的问题
Aug 06 Python
python实现图片素描效果
Sep 26 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
python中pdb模块实例用法
Jan 15 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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实现下载功能的代码
2012/09/29 PHP
浅析is_writable的php实现
2013/06/18 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
React实现全选功能
2020/08/25 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python代码中怎么换行
2020/06/17 Python
Python timeit模块原理及使用方法
2020/10/10 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
美国创意之家:BulbHead
2017/07/12 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
英语演讲稿范文
2014/01/03 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
JavaScript实例 ODO List分析
2022/01/22 Javascript
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang
python实现手机推送 代码也就10行左右
2022/04/12 Python