python实现排序算法解析


Posted in Python onSeptember 08, 2018

本文实例为大家分享了python实现排序算法的具体代码,供大家参考,具体内容如下

一、冒泡排序

def bububle_sort(alist):
 """冒泡排序(稳定|n^2m)"""
 n = len(alist)
 for j in range(n-1):
  count = 0
  for i in range(0,n-1-j):
   if alist[i]>alist[i+1]:
    count +=1
    alist[i], alist[i+1] = alist[i+1], alist[i]
  if count==0:
   return

二、选择排序

def select_sort(alist):
  """选择排序(不稳定|n^2)"""
  n = len(alist)
  for j in range(n-1):
    min_index = j
    for i in range(j+1,n):
      if alist[min_index] > alist[i]:
        min_index = i
    alist[j], alist[min_index] = alist[min_index], alist[j]

三、插入排序

def insert_sort(alist):
  """插入排序(稳定|n^2)"""
  n = len(alist)
  for j in range(1,n):
    i = j
    while i>0:
      if alist[i] < alist[i-1]:
        alist[i], alist[i-1] = alist[i-1], alist[i]
        i -= 1
      else:
        break

四、希尔排序

def shell_sort(alist):
  """希尔排序(不稳定|n^2)"""
  n = len(alist)
  gap = n//2

  while gap>=1:
    for j in range(gap,n):
      i=j
      while i>0:
        if alist[i]<alist[i-gap]:
          alist[i], alist[i-gap] = alist[i-gap], alist[i]
          i -= gap
        else:
          break
    gap //=2

五、快速排序

def quick_sort(alist, first, last):
  """快速排序(不稳定|n^2)"""
  if first >= last:
    return
  mid_value = alist[first]
  low = first
  high = last
  while low < high:
    #high左移
    while low <high and alist[high] >= mid_value:
      high -= 1
    alist[low] = alist[high]
    #low右移
    while low < high and alist[low] < mid_value:
      low += 1
    alist[high] =alist[low] 
  #从循环退出时,low=high
  alist[low] = mid_value

  #对low左边的列表执行快速排序
  quick_sort(alist, first, low-1)
  #对low右边的列表执行快速排序
  quick_sort(alist, low+1, last)

六、归并排序

def merge_sort(alist):
  """归并排序(稳定|nlgn)"""
  n = len(alist)
  if n <= 1:
    return alist
  mid = n//2

  #left 采用归并排序后形成新的有序列表
  left_li = merge_sort(alist[:mid])
  #right 采用归并排序后形成新的有序列表
  right_li = merge_sort(alist[mid:])

  #merge(left, right) 将两个有序的子序列合并为一个新的整体
  left_pointer, right_pointer = 0, 0
  result = []

  while left_pointer < len(left_li) and right_pointer<len(right_li):
    if left_li[left_pointer] < right_li[right_pointer]:
      result.append(left_li[left_pointer])
      left_pointer += 1
    else:
      result.append(right_li[right_pointer])
      right_pointer += 1

  result += left_li[left_pointer:]
  result += right_li[right_pointer:]
  return result

python实现排序算法解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python高效编程技巧
Jan 07 Python
python中urllib模块用法实例详解
Nov 19 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
TensorFlow实现Logistic回归
Sep 07 #Python
tensorflow实现简单逻辑回归
Sep 07 #Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 #Python
TensorFlow实现iris数据集线性回归
Sep 07 #Python
TensorFlow实现模型评估
Sep 07 #Python
使用tensorflow实现线性svm
Sep 07 #Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 #Python
You might like
php实现html标签闭合检测与修复方法
2015/07/09 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
Jquery异步请求数据实例代码
2011/12/28 Javascript
javascript 常用功能总结
2012/03/18 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
JavaScript链式调用实例浅析
2018/12/19 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
Python中join和split用法实例
2015/04/14 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
地理科学专业毕业生求职信
2013/10/15 职场文书
见习报告的格式
2014/11/04 职场文书
军事博物馆观后感
2015/06/05 职场文书
2016公司新年问候语
2015/11/11 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android