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笔记(2)
Oct 24 Python
Python EOL while scanning string literal问题解决方法
Sep 18 Python
python绘制双柱形图代码实例
Dec 14 Python
python3.6数独问题的解决
Jan 21 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
python调用win32接口进行截图的示例
Nov 11 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 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实现多服务器共享SESSION数据的方法
2007/03/16 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Python中 map()函数的用法详解
2018/07/10 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
python文件排序的方法总结
2020/09/13 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
2014年服务员工作总结
2014/11/18 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS