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之hello world
May 21 Python
python实现log日志的示例代码
Apr 28 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
python实现倒计时小工具
Jul 29 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
Python魔法方法 容器部方法详解
Jan 02 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
python定时截屏实现
Nov 02 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
php&amp;java(三)
2006/10/09 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
vuex 的简单使用
2018/03/22 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
浅谈小程序 setData学问多
2019/02/20 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
Python魔术方法详解
2015/02/14 Python
python分布式环境下的限流器的示例
2017/10/26 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
使用Python 统计高频字数的方法
2019/01/31 Python
python lxml中etree的简单应用
2019/05/10 Python
python中的列表与元组的使用
2019/08/08 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
中国电视购物:快乐购
2017/02/04 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
个人自我鉴定怎么写
2013/10/28 职场文书
代理人委托书
2014/08/01 职场文书
人事局接收函
2015/01/30 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js