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 redis模块的使用教程指南

    Python redis模块的使用教程指南

    这篇文章主要为大家详细介绍了Python redis模块的使用教程指南的相关资料,文中的示例代码讲解详细,感兴趣的小伙伴快跟随小编一起学习一下吧
    2022-10-10
  • python爬取个性签名的方法

    python爬取个性签名的方法

    这篇文章主要为大家详细介绍了python爬取个性签名的方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • python程序中的线程操作 concurrent模块使用详解

    python程序中的线程操作 concurrent模块使用详解

    这篇文章主要介绍了python程序中的线程操作 concurrent模块使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 在PyCharm中三步完成PyPy解释器的配置的方法

    在PyCharm中三步完成PyPy解释器的配置的方法

    今天小编就为大家分享一篇在PyCharm中三步完成PyPy解释器的配置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Pyecharts 中Geo函数常用参数的用法说明

    Pyecharts 中Geo函数常用参数的用法说明

    这篇文章主要介绍了Pyecharts 中Geo函数常用参数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Jupyter notebook快速入门教程(推荐)

    Jupyter notebook快速入门教程(推荐)

    这篇文章主要介绍了Jupyter notebook快速入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Python中横向或纵向拼接两个表方法实例

    Python中横向或纵向拼接两个表方法实例

    最近要将两个表格合并,Python处理起来很简单,所以这篇文章主要给大家介绍了关于Python中横向或纵向拼接两个表的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 基于python的BP神经网络及异或实现过程解析

    基于python的BP神经网络及异或实现过程解析

    这篇文章主要介绍了基于python的BP神经网络及异或实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • python类继承用法实例分析

    python类继承用法实例分析

    这篇文章主要介绍了python类继承用法,实例分析了Python类的定义与类继承的实现技巧,需要的朋友可以参考下
    2015-05-05
  • python简单实现AES加密和解密

    python简单实现AES加密和解密

    这篇文章主要为大家详细介绍了python简单实现AES加密和解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03

最新评论