首页 > 编程语言 >排序算法Python

排序算法Python

时间:2022-11-17 23:26:25浏览次数:68  
标签:nums Python pos len listnum 算法 排序 def

冒泡排序

def bubbleSort(nums):
    if len(nums) <= 1:
        return nums

    for i in range(len(nums) - 1):
        for j in range(len(nums) - i - 1):
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
    return nums

listnum = [5, 3, 8, 7, 9, 2, 18, 6, 8, 10, 55, 12, 58, 47]
bubbleSort(listnum)

 

选择排序

def selectionSort(nums):

    if len(nums) <= 1:

        return nums



    for i in range(0, len(nums)):

        # 最小值位置索引

        minIndex = i

        for j in range(i + 1, len(nums)):

            if nums[j] < nums[minIndex]:

                minIndex = j

        nums[i], nums[minIndex] = nums[minIndex], nums[i]

    return nums



listnum = [5, 3, 8, 7, 9, 2, 18, 6, 8, 10, 55, 12, 58, 47]

selectionSort(listnum)

 

插入排序

def insertSort(nums):

    if len(nums) <= 1:

        return nums



    for i in range(1, len(nums)):

        pos = 0

        for j in range(i - 1, -1, -1):

            if nums[i] > nums[j]:

                pos = j + 1

                break

        temp = nums[i]

        for x in range(i, pos - 1, -1):

            nums[x] = nums[x - 1]

        nums[pos] = temp

    return nums



listnum = [5, 3, 8, 7, 9, 2, 18, 6, 8, 10, 55, 12, 58, 47]

insertSort(listnum)

 

快速排序

def quicksort(nums):

    if len(nums) <= 1:

        return nums



    # 左子数组

    left = []

    # 右子数组

    right = []

    # 基准数,数组最后一位

    base = nums.pop()

    # 对原数组进行划分

    for x in nums:

        if x < base:

            left.append(x)

        else:

            right.append(x)

    # 递归调用

    return quicksort(right) + [base] + quicksort(left)



listnum = [5, 3, 8, 7, 9, 2, 18, 6, 8, 10, 55, 12, 58, 47]

quicksort(listnum)

标签:nums,Python,pos,len,listnum,算法,排序,def
From: https://www.cnblogs.com/tamya/p/16901753.html

相关文章

  • python基础语法知识
    1、多组输入没有结束标志的两种表示形式#method1:try:whileTrue:#代码exceptEOFError:pass #method2:whileTrue:try:#代码......
  • python-单例-笔记
    目标单例设计模式​​__new__​​ 方法Python中的单例01.单例设计模式设计模式设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题......
  • python-异常-笔记
    目标异常的概念捕获异常异常的传递抛出异常01.异常的概念程序在运行时,如果 ​​Python解释器​​ 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常......
  • python-模块和包-笔记
    目标模块包发布模块01.模块1.1模块的概念模块是Python程序架构的一个核心概念每一个以扩展名 ​​py​​ 结尾的 ​​Python​​ 源代码文件都是一个 模块模块名 ......
  • python-文件-笔记
    目标文件的概念文件的基本操作文件/文件夹的常用操作文本文件的编码方式01.文件的概念1.1文件的概念和作用计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据......
  • 冒泡排序法2.0版本,加输入、输出数组字符串
    大家晚上好呀,今天给大家带来的是冒泡排序法的代码,首先我们以一些简单的数字来举例,根据昨天已有的知识点,我们可以利用二重循环写出基本代码,如图但是我这个有问题,但我目前还没......
  • python-eval 函数-笔记
    ​​eval()​​ 函数十分强大—— 将字符串 当成 有效的表达式 来求值并 返回计算结果#基本的数学计算In[1]:eval("1+1")Out[1]:2#字符串重复In[2]:eval("'*'......
  • JS最大值、最小值、排序等的简单实现
    最大值Math.max(...arr)最小值Math.min(...arr)从小到大排序arr.sort((a,b)=>a-b)从大到小排序arr.sort((a,b)=>b-a) 最大数Infinity最小数-Infini......
  • 20221117-python-条件判断
    1.浅拷贝与深拷贝        2.分支语句   ......
  • 学习python-89
    今日学习内容celery介绍它是一个异步任务提交的框架作用:完成异步任务:提高项目的并发量。之前开启线程做,现在用celery做。完成延迟任务完成定时任务架构:消息中......