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使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
TensorFlow实现Logistic回归
Sep 07 Python
python实现移位加密和解密
Mar 22 Python
python实现图片转字符小工具
Apr 30 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
Python修改列表值问题解决方案
Mar 06 Python
Python中Yield的基本用法
Oct 18 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
手把手教你使用TensorFlow2实现RNN
一篇文章弄懂Python关键字、标识符和变量
python开发飞机大战游戏
详解Python中下划线的5种含义
Python操作CSV格式文件的方法大全
openstack中的rpc远程调用的方法
Python实现查询剪贴板自动匹配信息的思路详解
You might like
php xml-rpc远程调用
2008/12/19 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
vue实现图片上传到后台
2020/06/29 Javascript
python根据文件大小打log日志
2014/10/09 Python
深入理解Python中装饰器的用法
2016/06/28 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
python爬取淘宝商品销量信息
2018/11/16 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
详解python tcp编程
2020/08/24 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
英国女装网上商店:I Saw It First
2018/10/18 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
商业计划书之服装
2019/09/09 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python