Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例


Posted in Python onMay 04, 2019

本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法。分享给大家供大家参考,具体如下:

#!/usr/bin/python
# coding:utf-8
#直接插入排序
def insert_sort(list):
  for i in range(len(list)):
    Key = list [i]      #待插入元素
      j = i - 1
      while(Key < list[j] and j >= 0):
        list[j+1] = list[j]  #后移元素
        list[j] = Key
        j=j-1
  return list
#冒泡排序  
def bubble_sort(list):
  for i in range(1, len(list)):
    for j in range(len(list)-i):
      if list[j] > list [j+1]:
        list[j+1],list[j] =list[j],list[j+1]
  return list
#快速排序
def position_key(list, low, high):
  i = low
  j = high
  key = list[low]
  while(i < j):
    while(i < j and list[j] >= key):  #从右向左,寻找第一个小于基准元素的数据索引。 注意:i<y 的判断,内循环更新j
      j -= 1
    if i < j :
      list[i] = list[j]
    while(i<j and list[i] <= key):   #从左向右,寻找地一个大于基准元素的数据索引。i<y同上
      i += 1
    if i < j:
      list[j] = list[i]
  list[j] = key     # 基准元素位置 
  return j
def quick_sort(list, low, high):
  if low < high:
    position = position_key(list, low, high) #将数据分成前后两个子序列(前边序列值均小于后边序列)
    quick_sort(list, low, position-1)    #将前面的序列快速排序
    quick_sort(list, position+1, high)    #将后面的序列快速排序
  return list
#选择排序
def select_sort(list):
  for i in range(len(list)):
    for j in range(i, len(list)):
      if list[i] > list[j]:
        list[i], list[j] = list[j], list[i]
  return list
list = [23, 232, 11, 89,121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111]
print '原始序列  :', list
print '直接插入排序:', insert_sort(list)
print '冒泡排序  :', bubble_sort(list)
print '快速排序  :', quick_sort(list, 0, len(list)-1)
print '选择排序  :', select_sort(list)

结果如下:

原始序列    : [23, 232, 11, 89, 121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111]
直接插入排序: [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
冒泡排序    : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
快速排序    : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
选择排序    : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]

Python 相关文章推荐
使用Python开发windows GUI程序入门实例
Oct 23 Python
Python中每次处理一个字符的5种方法
May 21 Python
Python中有趣在__call__函数
Jun 21 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python实现旋转和水平翻转的方法
Oct 25 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
Python中调用其他程序的方式详解
Aug 06 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 #Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 #Python
Python实现将HTML转成PDF的方法分析
May 04 #Python
Python第三方库face_recognition在windows上的安装过程
May 03 #Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 #Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 #Python
利用python将图片版PDF转文字版PDF
May 03 #Python
You might like
虚拟主机中对PHP的特殊设置
2006/10/09 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
js实现tab切换效果
2017/02/16 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python实现全角半角转换的方法
2014/08/18 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
对python的文件内注释 help注释方法
2018/05/23 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
详解Python 最短匹配模式
2020/07/29 Python
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
一封普通求职者的求职信
2013/11/20 职场文书
监察建议书格式
2014/05/19 职场文书
企业年度评优方案
2014/06/02 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
vue动态绑定style样式
2022/04/20 Vue.js
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript