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异步任务队列示例
Apr 01 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
matplotlib设置legend图例代码示例
Dec 19 Python
python实现媒体播放器功能
Feb 11 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
python爬取指定微信公众号文章
Dec 20 Python
python对象与json相互转换的方法
May 07 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php中socket的用法详解
2014/10/24 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
在Python中编写数据库模块的教程
2015/04/29 Python
Python用threading实现多线程详解
2017/02/03 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
护士演讲稿范文
2014/01/05 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸