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函数式编程指南(四):生成器详解
Jun 24 Python
Python画图学习入门教程
Jul 01 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
Android分包MultiDex策略详解
Oct 30 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
Python跳出多重循环的方法示例
Jul 03 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
用Python实现屏幕截图详解
Jan 22 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
php实现12306余票查询、价格查询示例
2014/04/17 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
javascript prototype 原型链
2009/03/12 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
canvas时钟效果
2017/02/16 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python requests 测试代理ip是否生效
2018/07/25 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
在python中使用nohup命令说明
2020/04/16 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
自荐信模版
2013/10/24 职场文书
自荐信格式简述
2014/01/25 职场文书
小学教师国培感言
2014/02/08 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
程序员求职信
2014/04/16 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
经营目标管理责任书
2014/07/25 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
合作协议书模板2014
2014/09/26 职场文书
教师个人学习总结
2015/02/11 职场文书
导游词格式
2015/02/13 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python