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 21 Python
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
解析Python编程中的包结构
Oct 25 Python
对python中使用requests模块参数编码的不同处理方法
May 18 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
python学生信息管理系统实现代码
Dec 17 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
简单了解Python读取大文件代码实例
Dec 18 Python
python实现简单俄罗斯方块
Mar 13 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 Python
Python网络编程之ZeroMQ知识总结
Apr 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中使用Oracle数据库(3)
2006/10/09 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
用python与文件进行交互的方法
2018/03/01 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
python3 使用traceback定位异常实例
2020/03/09 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
如何查看python关键字
2021/01/17 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
C面试题
2015/10/08 面试题
介绍一下gcc特性
2012/01/20 面试题
电子商务求职信
2014/06/15 职场文书
2014年稽查工作总结
2014/12/20 职场文书
出生公证书
2015/01/23 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
初中毕业感言300字
2015/07/31 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
mysql sock文件存储了什么信息
2022/07/15 MySQL