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 相关文章推荐
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
python保存字符串到文件的方法
Jul 01 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
python numpy存取文件的方式
Apr 01 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
php中explode的负数limit用法分析
2015/02/27 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
php格式化时间戳
2016/12/17 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
解决python报错MemoryError的问题
2018/06/26 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python实现一个简单的ping工具方法
2019/01/31 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
python eventlet绿化和patch原理
2020/11/21 Python
法学专业应届生求职信
2013/10/16 职场文书
给男朋友的道歉信
2014/01/12 职场文书
春节晚会主持词
2014/03/24 职场文书
保护环境建议书300字
2014/05/13 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
python小程序之飘落的银杏
2021/04/17 Python
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS