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异常处理慎用“except:pass”建议
Apr 02 Python
Python实现配置文件备份的方法
Jul 30 Python
JSON Web Tokens的实现原理
Apr 02 Python
python实现简单淘宝秒杀功能
May 03 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
python中的列表与元组的使用
Aug 08 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 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/12/06 PHP
php模板中出现空行解决方法
2011/03/08 PHP
php去掉文件前几行的方法
2015/07/29 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python读写csv文件方法详细总结
2019/07/05 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
python如何实现递归转非递归
2021/02/25 Python
四好少年事迹材料
2014/01/12 职场文书
思想品德课教学反思
2014/02/10 职场文书
集体备课反思
2014/02/12 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
redis 存储对象的方法对比分析
2021/08/02 Redis
Python实现位图分割的效果
2021/11/20 Python