Python实现桶排序与快速排序算法结合应用示例

 更新时间:2017年11月22日 08:59:39   作者:Alex Yu  
这篇文章主要介绍了Python实现桶排序与快速排序算法结合应用,结合实例形式分析了Python快速排序及桶排序结合应用的相关实现技巧,需要的朋友可以参考下

本文实例讲述了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编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python使用ChainMap实现组合数据魔法实例探究

    Python使用ChainMap实现组合数据魔法实例探究

    这篇文章主要为大家介绍了Python使用ChainMap实现组合数据魔法实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • pycharm中安装git遇到的问题及解决

    pycharm中安装git遇到的问题及解决

    在PyCharm中安装Git时遇到问题,按照视频步骤操作后发现没有git选项,重新检查设置,发现git目录配置错误,重新选择正确的目录后,通过Test确认无误,在使用commit提交时遇到错误,按刷新按钮即可解决
    2024-11-11
  • 基于wxpython开发的简单gui计算器实例

    基于wxpython开发的简单gui计算器实例

    这篇文章主要介绍了基于wxpython开发的简单gui计算器,实例分析了基于wxpython实现简单桌面应用程序的相关技巧,需要的朋友可以参考下
    2015-05-05
  • python正则表达式re之compile函数解析

    python正则表达式re之compile函数解析

    这篇文章主要介绍了python正则表达式re之compile函数解析,介绍了其定义,匹配模式等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 基于Python实现模拟三体运动的示例代码

    基于Python实现模拟三体运动的示例代码

    此前所做的一切三体和太阳系的动画,都是基于牛顿力学的,而且直接对微分进行差分化,从而精度非常感人,用不了几年就得撞一起去。所以本文来用Python重新模拟一下三体运动,感兴趣的可以了解一下
    2023-03-03
  • Python借助with语句实现代码段只执行有限次

    Python借助with语句实现代码段只执行有限次

    这篇文章主要介绍了Python借助with语句实现代码段只执行有限次,首先要定义一个能够在with语句中使用的类实现enter和exit,下文详细介绍需要的小伙伴可以参考一下
    2022-03-03
  • Python json 模块核心用法之字典 / 列表与 JSON 字符串互转的操作

    Python json 模块核心用法之字典 / 列表与 JSON&nb

    在Python开发中,我们经常会遇到Python内置数据类型(字典、列表)和JSON字符串的相互转换需求,本文会通过实际代码案例,详细讲解json模块的两个核心方法,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • Python中切片赋值的高级技巧和避坑指南

    Python中切片赋值的高级技巧和避坑指南

    在 Python 的众多特性中,列表List的切片赋值无疑是最具Python 风格的操作之一,本文将深入剖析 Python 切片赋值的底层逻辑,揭示其背后的陷阱,并分享几个能让你的代码更健壮、更高效的高级技巧,希望对大家有所帮助
    2026-02-02
  • django实现类似触发器的功能

    django实现类似触发器的功能

    今天小编就为大家分享一篇django实现类似触发器的功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • flask框架蓝图和子域名配置详解

    flask框架蓝图和子域名配置详解

    这篇文章主要介绍了flask框架蓝图和子域名配置,结合实例形式详细分析了flask框架蓝图和子域名配置相关原理、操作技巧与注意事项,需要的朋友可以参考下
    2020-01-01

最新评论