Python实现排序方法常见的四种


Posted in Python onJuly 15, 2021

1.冒泡排序,相邻位置比较大小,将比较大的(或小的)交换位置

def maopao(a):
    for i in range(0,len(a)):
        for j in range(0,len(a)-i-1):
            if a[j]>a[j+1]:
                temp = a[j+1]
                a[j+1] = a[j]
                a[j] = temp
                #print(a)
        #print(a)
    print(a)

2.选择排序,遍历选择一个最小的数与当前循环的第一个数交换

def xuanze(a):
    for i in range(0,len(a)):
        k=i
        temp = a[i]
        for j in range(i,len(a)):
            if a[j]<temp:
                temp = a[j]
                k = j
        a[k] = a[i]
        a[i] = temp
    print(a)

3.快速排序:将子段的第一个元素做为中值,先从右向左遍历,如过比中值大high-1,如果比中值小,将这个值放到low那里。

然后从左向右开始遍历,如果左侧的比中值大,将他放到high那里。当low>=high时,将中值的值赋给low

(1.以下为参照公众号中的做法:

a =[7,1,3,2,6,54,4,4,5,8,12,34]
def sort(a,low,high): 
    while low < high:
        temp = a[low]
        while low < high and a[high]>=temp:
            high = high-1
        a[low]=a[high]
        while low<high and a[low]<temp:
            low = low+1
        a[high]=a[low]           
        a[low]=temp
    return low
def quicksort(a,low,high):
    if low<high:
        middle = sort(a,low,high)
        quicksort(a,low,middle)
        quicksort(a,middle+1,high)
        print(a)
sort(a,0,len(a)-1)
quicksort(a,0,len(a)-1)
print(a)

(2.以下是参照网上的做法:

在做快速排序时一直各种问题,是因为地柜那里没有考虑清楚,一直把low的值赋值为0了,实际上应该是不固定的low值,他每个子循环不定。

'''
遇到问题没人解答?小编创建了一个Python学习交流群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a =[7,1,3,2,6,54,4,4,5,8,12,34]
def sort(a,low,high): 
    while low < high:
        temp = a[low]
        while low < high and a[high]>=temp:
            high = high-1
        while low<high and a[high]<temp:
            a[low]=a[high]           
            low =low+1
            a[high]=a[low]
        a[low]=temp
    return low
def quicksort(a,low,high):
    if low<high:
        middle = sort(a,low,high)
        quicksort(a,low,middle)
        quicksort(a,middle+1,high)
        print(a)
sort(a,0,len(a)-1)
quicksort(a,0,len(a)-1)
print(a)

4.插入排序:从左向右遍历,依次选取数值,从数值的左侧从右向左遍历,选择第一个比他小的数值的右侧插入该数值,其他数值依次向后赋值

#插入排序
a =[7,1,3,2,6,54,4,4,5,8,12,34]
for i in range(0,len(a)-1):
    temp=a[i+1]
    j=i+1
    while j>=0 and temp<a[j-1]:
        j=j-1      
        print(j)
    if j>=-1:
        k= i+1
        while k>=j:
            a[k]=a[k-1]
            k=k-1
            print(a)
        a[j]=temp
print(a)

插入排序方法2,用到了列表的a.insert(1,2)和清楚a[2:3]=[],这样可以少用一个循环

a =[7,1,3,2,6,54,4,4,5,8,12,34]
for i in range(1,len(a)-1):
    temp=a[i]
   
    j=i-1
    while j>=0 and temp<=a[j]:
        print(temp)
        j=j-1
    if j >=-1:
        a[i:i+1]=[]
        a.insert(j+1,temp)
        print(a)
print(a)

到此这篇关于Python实现排序的四种方法的文章就介绍到这了,更多相关python排序方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用cookielib库示例分享
Mar 03 Python
Python实现的简单发送邮件脚本分享
Nov 07 Python
Python中使用不同编码读写txt文件详解
May 28 Python
python算法演练_One Rule 算法(详解)
May 17 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
Linux下python3.7.0安装教程
Jul 30 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
python调用动态链接库的基本过程详解
Jun 19 Python
python实现PID算法及测试的例子
Aug 08 Python
Linux下通过python获取本机ip方法示例
Sep 06 Python
python实现udp传输图片功能
Mar 20 Python
baselines示例程序train_cartpole.py的ImportError
May 20 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
php学习之数据类型之间的转换介绍
2011/06/09 PHP
php继承的一个应用
2011/09/06 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
Python谱减法语音降噪实例
2019/12/18 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
五一活动标语
2014/06/30 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
工作调动申请报告
2015/05/18 职场文书
电工实训心得体会
2016/01/14 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
分析Python list操作为什么会错误
2021/11/17 Python