Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
作者:King-1018 发布时间:2023-06-09 02:51:16
本文实例讲述了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]
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/King0217/article/details/78785293
猜你喜欢
- 一直想着给框架添加邮件发送功能、所以整理下python下邮件发送功能首先python是支持邮件的发送、内置smtp库、支持发送纯文本、HTM
- 本文主要分享的是一则python+opencv实现任意角度的透视变换的实例,具体如下:# -*- coding:utf-8 -*-impor
- 阅读前:Pro Javascript Techniques翻译连载说明和目录JavaScript的演化是渐进而稳固的。历经过去十年的进程,J
- pytorch中基本的变量类型当属FloatTensor(以下都用floattensor),而Variable(以下都用variable)是
- 前两篇讲述了Django的理论,从这篇开始,我们真正进入Django实战部分,今天先从用户认证开始。当大家平时打开一个网站时,第一步一般做什
- 前言笔者最近正在学习Pandas数据分析,将自己的学习笔记做成一套系列文章。本节主要记录Pandas中数据的合并(concat和append
- 根据不同配置文件调用不同的验证函数检查输入。可以根据需求更改验证函数的逻辑。def VerifyData(func):  
- 从字节码角度看描述器在前面的内容当中我们已经详细分析了描述器的使用和其相关的应用,我们通常使用描述器都是将其作为类的一个类属性使用,而使用的
- python部分#!/usr/bin/env Python# coding=utf-8from ctypes import *from Py
- 1. 什么是虚拟环境?虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。举个例子吧。假设我们的
- 一些MySQL发布对MySQL数据库中的系统表的结构进行了更改,添加了新权限或特性。当你更新到新版本MySQL,你应同时更新系统表,以确保它
- 静态页面由于其稳定性快速性,的确给SE、用户及站长带来了方便。但有时,需要记住用户的信息,如用户留下评论后,下一次再来,就要记住该用户的信息
- 这篇文章主要介绍了通过实例了解Python str()和repr()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 本文为大家分享了python实现大音频文件语音识别功能的具体代码,供大家参考,具体内容如下实现思路:先用ffmpeg将其他非wav格式的音频
- 这篇论坛文章主要介绍了Oracle数据库到SQL Server数据库主键的迁移过程,具体内容请参考下文。由于项目需要要将以前Oracle的数
- 没有使用igraph库哦 因为我还没学小世界网络简介:1998年, Watts和Strogatz 提出了小世界网络这一概念,并建立了WS模型
- 在写python程序时,对于可变对象和不可变对象这里理解不深,导致总会犯一些细节错误。以下面的程序举例:ab = {'a':
- 此程序主要是针对某个目录下的全部文件进行筛选,会删除重复的文件。原理很简单,会计算每个文件的哈希,将哈希存入一个字典,文件名对应哈希。imp
- 今天在研究Plotly绘制散点图的方法,供大家参考,具体内容如下使用Python3.6 + PlotlyPlotly版本2.0.0在开始之前
- 本文实例讲述了Django框架视图介绍与使用。分享给大家供大家参考,具体如下:视图视图:即一个python函数,可以叫 视图函数,或者简称