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 22 Python
多版本Python共存的配置方法
May 22 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
pandas 快速处理 date_time 日期格式方法
Nov 12 Python
Python基于mysql实现学生管理系统
Feb 21 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Django项目中使用JWT的实现代码
Nov 04 Python
解决pip install psycopg2出错问题
Jul 09 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
Python实现学生管理系统(面向对象版)
Jun 24 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
ezSQL PHP数据库操作类库
2010/05/16 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
python中正则表达式的使用详解
2014/10/17 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
python中删除某个元素的方法解析
2019/11/05 Python
学前班幼儿评语大全
2014/12/29 职场文书
中学生运动会广播稿
2015/08/19 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
MySQL Server 层四个日志
2022/03/31 MySQL
使用Redis实现分布式锁的方法
2022/06/16 Redis
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android