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实现带声音的摩斯码翻译实现方法
May 20 Python
多版本Python共存的配置方法
May 22 Python
Django中的Signal代码详解
Feb 05 Python
python多线程下信号处理程序示例
May 31 Python
python 修改本地网络配置的方法
Aug 14 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
python 装饰器功能与用法案例详解
Mar 06 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
python hmac模块验证客户端的合法性
Nov 07 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 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.MVC的模板标签系统(四)
2006/09/05 PHP
Ajax PHP分页演示
2007/01/02 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
vuejs如何配置less
2017/04/25 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
python if not in 多条件判断代码
2016/09/21 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
大气污染防治方案
2014/05/19 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
储备店长岗位职责
2015/04/14 职场文书
女方离婚起诉书
2015/05/18 职场文书
道士塔读书笔记
2015/06/30 职场文书
商业计划书格式、范文
2019/03/21 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
MySQL笔记 —SQL运算符
2022/01/18 MySQL