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 相关文章推荐
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
python中os模块详解
Oct 14 Python
多个应用共存的Django配置方法
May 30 Python
Python中偏函数用法示例
Jun 07 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
python unichr函数知识点总结
Dec 16 Python
python实现过滤敏感词
May 08 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
探索Vue高阶组件的使用
2018/01/08 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
pyqt和pyside开发图形化界面
2014/01/22 Python
Python中装饰器学习总结
2018/02/10 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
公司合作协议范文
2014/10/01 职场文书
学生党员检讨书范文
2014/12/27 职场文书
单位实习鉴定评语
2015/01/04 职场文书
测量员岗位职责
2015/02/14 职场文书
班主任自我评价范文
2015/03/11 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
如何在C++中调用Python
2021/05/21 Python