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自动化测试工具Splinter简介和使用实例
May 13 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
对命令行模式与python交互模式介绍
May 12 Python
详解爬虫被封的问题
Apr 23 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
python单元测试框架pytest的使用示例
Oct 07 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
js DOM的学习笔记
2011/12/22 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
pytorch 常用线性函数详解
2020/01/15 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
毕业典礼邀请函
2015/01/31 职场文书