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 03 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
Jun 04 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
python3.6中anaconda安装sklearn踩坑实录
Jul 28 Python
在 Python 中利用 Pool 进行多线程
Apr 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
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python批量修改文件编码格式的方法
2018/05/31 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
见习期自我鉴定
2013/11/07 职场文书
监理资料员岗位职责
2014/01/03 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
门诊手术室工作制度
2014/01/30 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
低碳环保倡议书
2014/04/14 职场文书
受伤赔偿协议书
2014/09/24 职场文书
公司费用报销管理制度
2015/08/04 职场文书
《小小的船》教学反思
2016/02/18 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS
Java数组详细介绍及相关工具类
2022/04/14 Java/Android