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 探针的实现原理
Apr 23 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
python 内置函数filter
Jun 01 Python
python实现二叉树的遍历
Dec 11 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
Python  unittest单元测试框架的使用
Sep 08 Python
详解Python 解压缩文件
Apr 09 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
python实现按关键字筛选日志文件
Dec 24 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
常用js脚本
2006/12/03 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
python写一个md5解密器示例
2018/02/23 Python
Python PO设计模式的具体使用
2019/08/16 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python 列表反转显示的四种方法
2020/11/16 Python
pytorch中index_select()的用法详解
2021/01/06 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
Python中pass语句的作用是什么
2016/06/01 面试题
保险公司开门红口号
2014/06/21 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
同志主要表现材料
2014/08/21 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
企业催款函范本
2015/06/24 职场文书
毕业酒会致辞
2015/07/29 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript