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 初始化多维数组代码
Sep 06 Python
python写入xml文件的方法
May 08 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
简单谈谈Python的pycurl模块
Apr 07 Python
python学习开发mock接口
Apr 28 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
python程序需要编译吗
Jun 19 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php实现删除空目录的方法
2015/03/16 PHP
PHP实现的购物车类实例
2015/06/17 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[01:09:24]Ti4开幕式
2014/07/19 DOTA
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
python如何使用unittest测试接口
2018/04/04 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
自我鉴定的范文
2013/10/03 职场文书
计算机应用专业毕业生求职信
2013/10/24 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
家长会欢迎标语
2014/06/24 职场文书
博士生导师推荐信
2014/07/08 职场文书