关于Python排序问题(冒泡/选择/插入)

 更新时间:2023年04月14日 11:26:58   作者:灰勒塔德  
这篇文章主要介绍了关于Python排序问题(冒泡/选择/插入),学过C语言肯定接触过排序问题,我们最常用的也就是冒泡排序、选择排序、插入排序,需要的朋友可以参考下

前言:

学过C语言肯定接触过排序问题,我们最常用的也就是冒泡排序、选择排序、插入排序……等等,同样在Python中也有排序问题,这里我也会讲解Python中冒泡排序、选择排序和插入排序的写法和思维,上正文!

(这里我是以列表作为一个排序对象)

1.冒泡排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

import random as r
 
#写入数据
def add(li=[]):
    num=int(input(''))
    if num==-1:
        return li
    li.append(num)
    return add(li)
#排序
def bubble(li):
    for i in range(0,len(li)):
        for j in range(0,len(li)-i-1):
            if li[j]>li[j+1]:
                li[j]=li[j]^li[j+1]
                li[j+1]=li[j]^li[j+1]
                li[j] = li[j] ^ li[j + 1]
    return li
if __name__=='__main__':
    #输入:
    l=add()
    r.shuffle(l)
    print('排序前:',l)
    newlist2=bubble(l)
    print('2.排序后:',newlist2)

2.选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

import random as r
 
#写入数据
def add(li=[]):
    num=int(input(''))
    if num==-1:
        return li
    li.append(num)
    return add(li)
#选择排序
def choose(li):
    for i in range(0,len(li)-1):
        for j in range(i+1,len(li)):
            if li[i]>li[j]:
                li[j] = li[j] ^ li[i]
                li[i] = li[j] ^ li[i]
                li[j] = li[j] ^ li[i]
    return li
 
if __name__=='__main__':
    #输入:
    l=add()
    r.shuffle(l) #打乱列表的顺序
    print('排序前:',l)
    newlist3=choose(l)
    print('3.排序后:',newlist3)

3.插入排序

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法--插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

import random as r
 
#写入数据
def add(li=[]):
    num=int(input(''))
    if num==-1:
        return li
    li.append(num)
    return add(li)
#插入排序
def insert(li):
    for i in range(1,len(li)):
        num=li[i]
        j=i-1
        while j>=0 and li[j]>num:
            li[j+1]=li[j]
            li[j]=num
            j+=1
    return li
 
if __name__=='__main__':
    #输入:
    l=add()
    r.shuffle(l) #打乱列表的顺序
    print('排序前:',l)
    newlist4=insert(l)
    print('4.排序后:',newlist4)

到此这篇关于关于Python排序问题(冒泡/选择/插入)的文章就介绍到这了,更多相关Python排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何实现小程序 无限求和平均

    Python如何实现小程序 无限求和平均

    这篇文章主要介绍了python如何实现小程序 无限求和平均,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python使用爬虫猜密码

    Python使用爬虫猜密码

    我们可以通过python 来实现这样一个简单的爬虫猜密码功能。下面就看看如何使用python来实现这样一个功能,对python爬虫猜密码相关知识感兴趣的朋友参考下吧
    2016-02-02
  • python实现马丁策略的实例详解

    python实现马丁策略的实例详解

    这篇文章主要介绍了python实现马丁策略的实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Pygame Surface创建图像的实现

    Pygame Surface创建图像的实现

    本文主要介绍了Pygame Surface创建图像的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Python实现的寻找前5个默尼森数算法示例

    Python实现的寻找前5个默尼森数算法示例

    这篇文章主要介绍了Python实现的寻找前5个默尼森数算法,简单讲述了默尼森数的概念,并结合实例形式分析了Python求解默尼森数算法的相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 用python删除java文件头上版权信息的方法

    用python删除java文件头上版权信息的方法

    在使用他人代码时,为不保留文件头部版权信息,需要一个个删掉,下面是用python删除java文件头上的版权信息的方法
    2014-07-07
  • 一篇文章搞懂Python反斜杠的相关问题

    一篇文章搞懂Python反斜杠的相关问题

    这篇文章主要给大家介绍了如何通过一篇文章搞懂Python反斜杠的相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • jupyter notebook运行代码没反应且in[ ]没有*

    jupyter notebook运行代码没反应且in[ ]没有*

    本文主要介绍了jupyter notebook运行代码没反应且in[ ]没有*,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python中排序函数sorted()函数的使用实例

    Python中排序函数sorted()函数的使用实例

    sorted()作为Python内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序,下面这篇文章主要给大家介绍了关于Python中排序函数sorted()函数的相关资料,需要的朋友可以参考下
    2022-11-11
  • Python 机器学习工具包SKlearn的安装与使用

    Python 机器学习工具包SKlearn的安装与使用

    Sklearn(全称 SciKit-Learn),是基于 Python 语言的机器学习工具包。本文将简单的介绍SKlearn安装与使用,想要入坑机器学习的同学可以参考下
    2021-05-05

最新评论