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中第三方库Requests库的高级用法详解
Mar 12 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
python: 判断tuple、list、dict是否为空的方法
Oct 22 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
Django组件之cookie与session的使用方法
Jan 10 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
python实现自动打卡的示例代码
Oct 10 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
jquery foreach使用示例
2013/09/12 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
Python制作CSDN免积分下载器
2015/03/10 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
Django的性能优化实现解析
2019/07/30 Python
Django--权限Permissions的例子
2019/08/28 Python
Python文件操作函数用法实例详解
2019/12/24 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
计算机专业学生的自我评价
2013/12/15 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
公司给客户的感谢信
2015/01/23 职场文书
2014年终个人总结报告
2015/03/09 职场文书
详解nginx location指令
2022/01/18 Servers
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技