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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
Python生成随机数的方法
Jan 14 Python
python 调用HBase的简单实例
Dec 18 Python
python获取代码运行时间的实例代码
Jun 11 Python
Python中return self的用法详解
Jul 27 Python
python实现zabbix发送短信脚本
Sep 17 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
python3 使用traceback定位异常实例
Mar 09 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
Python操作Excel把数据分给sheet
May 20 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循环语句笔记(foreach,list)
2011/11/29 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
答题辅助python代码实现
2018/01/16 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
区三好学生主要事迹
2014/01/30 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
cf收人广告词
2014/03/14 职场文书
学习十八大演讲稿
2014/09/15 职场文书
布达拉宫导游词
2015/02/02 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
单位病假条范文
2015/08/17 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server