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共享引用(多个变量引用)示例代码
Dec 04 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
python用户管理系统的实例讲解
Dec 23 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
Python对excel文档的操作方法详解
Dec 10 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
Python中遍历列表的方法总结
Jun 27 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
Django Model中字段(field)的各种选项说明
May 19 Python
python识别围棋定位棋盘位置
Jul 26 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视频拍照上传头像功能实现代码分享
2015/10/08 PHP
调试php程序的简单步骤
2019/10/04 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
javascript天然的迭代器
2010/10/29 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python修改txt文件中的某一项方法
2018/12/29 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
8和9的加减法教学反思
2014/05/01 职场文书
学校宣传标语
2014/06/18 职场文书
长江三峡导游词
2015/01/31 职场文书
采购员工作总结范文
2015/08/12 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL