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 json encode datetime类型
Dec 28 Python
python类定义的讲解
Nov 01 Python
Python的内存泄漏及gc模块的使用分析
Jul 16 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
Django如何自定义分页
Sep 25 Python
使用Template格式化Python字符串的方法
Jan 22 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
python获取Linux发行版名称
Aug 30 Python
django创建简单的页面响应实例教程
Sep 06 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
Python configparser模块常用方法解析
May 22 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
phpinfo的知识点总结
2019/10/10 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
javascript 数组操作详解
2015/01/29 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python处理cookie详解
2014/02/07 Python
跟老齐学Python之编写类之三子类
2014/10/11 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
python中实现控制小数点位数的方法
2019/01/24 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Python爬取某平台短视频的方法
2021/02/08 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
同志主要表现材料
2014/08/21 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL