Python实现排序方法常见的四种

 更新时间:2021年07月15日 11:03:23   作者:小小程序员ol  
本文给大家分享python四种常见排序方法,每种方法通过实例代码给大家介绍的非常详细,需要的朋友参考下吧

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实现图片识别加翻译功能

    这篇文章主要介绍了Python使用百度AI接口实现图片识别加翻译功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python 面向对象三大特征详解

    python 面向对象三大特征详解

    这篇文章主要介绍了python 面向对象三大特征,小编觉得这篇文章讲的不错,感兴趣的朋友一起来阅读下面文章吧
    2021-10-10
  • 对Python _取log的几种方式小结

    对Python _取log的几种方式小结

    今天小编就为大家分享一篇对Python _取log的几种方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python Web框架之Django框架cookie和session用法分析

    Python Web框架之Django框架cookie和session用法分析

    这篇文章主要介绍了Python Web框架之Django框架cookie和session用法,结合实例形式分析了Django框架cookie和session的常见使用技巧与操作注意事项,需要的朋友可以参考下
    2019-08-08
  • 用Python写一个无界面的2048小游戏

    用Python写一个无界面的2048小游戏

    这篇文章主要介绍了用Python写一个无界面的2048小游戏的相关资料,需要的朋友可以参考下
    2016-05-05
  • Python数据可视化Pyecharts制作Heatmap热力图

    Python数据可视化Pyecharts制作Heatmap热力图

    这篇文章主要介绍了Python数据可视化Pyecharts制作Heatmap热力图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • educoder之Python数值计算库Numpy图像处理详解

    educoder之Python数值计算库Numpy图像处理详解

    这篇文章主要为大家介绍了educoder之Python数值计算库Numpy图像处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 如何使用pdb进行Python调试

    如何使用pdb进行Python调试

    本篇教程中,我们主要讲解了pdb中一些基本常用的内容,包括打印表达式使用n(next)和s(step)命令调试代码断点使用unt(until)来继续执行代码显示表达式查找一个函数的调用者,对pdb Python调试相关知识感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • python中logging模块的一些简单用法的使用

    python中logging模块的一些简单用法的使用

    这篇文章主要介绍了python中logging模块的一些简单用法的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • python实现可逆简单的加密算法

    python实现可逆简单的加密算法

    这篇文章主要为大家详细介绍了python实现可逆简单的加密算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03

最新评论