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 05 Python
python修改操作系统时间的方法
May 18 Python
Python二分查找详解
Sep 13 Python
Python 40行代码实现人脸识别功能
Apr 02 Python
Python Web编程之WSGI协议简介
Jul 18 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
如何使用python切换hosts文件
Apr 29 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
Django rest framework如何自定义用户表
Jun 09 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
帅气的琦玉老师
2020/03/02 日漫
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
PHP session 会话处理函数
2016/06/06 PHP
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
.NET面试问题集
2015/12/08 面试题
读书心得体会
2013/12/28 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
培训心得体会
2013/12/29 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
招标承诺书
2014/08/30 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL