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打印斐波拉契数列实例
Jul 07 Python
python getopt详解及简单实例
Dec 30 Python
python模块之re正则表达式详解
Feb 03 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
了解不常见但是实用的Python技巧
May 23 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
利用python绘制数据曲线图的实现
Apr 09 Python
python和go语言的区别是什么
Jul 20 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
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精确的统计在线人数的方法
2015/10/21 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
dojo 之基础篇
2007/03/24 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python实现下载文件的三种方法
2017/02/09 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
网站推广策划方案
2014/06/04 职场文书
政风行风建设责任书
2014/07/23 职场文书
火锅店的活动方案
2014/08/15 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android