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 相关文章推荐
KMP算法精解及其Python版的代码示例
Jun 01 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Python解析多帧dicom数据详解
Jan 13 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
tensorflow指定CPU与GPU运算的方法实现
Apr 21 Python
python的flask框架难学吗
Jul 31 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
python opencv肤色检测的实现示例
Dec 21 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
IStream与TStream之间的相互转换
2008/08/01 PHP
php 获取客户端的真实ip
2009/11/30 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
js倒计时抢购实例
2015/12/20 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
js里面的变量范围分享
2020/07/18 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
使用python实现扫描端口示例
2014/03/29 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
客房主管岗位职责
2013/12/09 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
拔河比赛口号
2014/06/10 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
健康证明
2015/06/19 职场文书
草房子读书笔记
2015/06/29 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
2016年校长新年寄语
2015/08/17 职场文书
python删除csv文件的行列
2021/04/06 Python
virtualenv隔离Python环境的问题解析
2022/06/21 Python