python实现常见算法

Python基础:算法(非常详细) 定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。一个算法应该具有以下五个重要的特征:有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止; 阅读详情

常见算法:

一、排序引入

1.排序与搜索
排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。
2.排序算法的稳定性
稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。

1 8 3 8 5 6 7 2
(4,1) (3,1) (3,7) (5,6)
(3,7)(3,1)

如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。
不稳定排序算法可能会在相等的键值中改变纪录的相对次序

二、冒泡排序

1.什么是冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法。
它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
冒泡排序算法的工作原理如下:
比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
除了最后一个,所有的元素重复以上的步骤。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2.冒泡排序的分析
交换过程:
在这里插入图片描述
3.冒泡排序的实现

def bubble_sort(alist):
    # 外层循环控制比较几轮
    n = len(alist)
    for j in range(n - 1):
        # 内存循环控制交换
        # -j是不再换已经排好的
        for i in range(n - 1 - j):
            # 若前一个比后一个大,则换
            if alist[i] > alist[i + 1]:
                alist[i], alist[i + 1] = alist[i + 1], alist[i]

if __name__ == '__main__':
    li = [33, 11, 26, 78, 3, 9, 40]
    print(li)
    bubble_sort(li)
    print(li)

优化有序的情况,最优时间复杂度O(n)

def bubble_sort(alist):
    # 外层循环控制比较几轮
    n = len(alist)
    for j in range(n - 1):
        # 定义计数器
        count = 0
        # 内存循环控制交换
        # -j是不再换已经排好的
        for i in range(n - 1 - j):
            # 若前一个比后一个大,则换
            if alist[i] > alist[i + 1]:
                alist[i], alist[i + 1] = alist[i + 1], alist[i]
                # 计数器
                count += 1
        if count == 0:
            return

4.时间复杂度
最优时间复杂度:O(n)
最坏时间复杂度:O(n²)
稳定性:稳定
5.评价
优点:稳定,简单
缺点:效率不很高,运行时间较长

三、选择排序

1.什么是选择排序
选择排序(Selection sort)是一种简单直观的排序算法。
选择排序算法的工作原理如下:
首先在序列中找到最小或最大元素,存放到排序序列的前或后。
然后,再从剩余元素中继续寻找最小或最大元素。
然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
2.选择排序的分析
排序过程:
在这里插入图片描述
3.选择排序的实现

alist = [3, 11, 26, 26,7, 3, 9, 4]
 选择排序把数据当成2部分
 alist = [3,        11, 26, 26,7, 9, 4]
 alist = [3, 4     11, 26, 26,7, 9]
 怎么找到最小值? 索引min = 0
 最终min = 0
 min = 1开始
 min = 6
 alist[1] alist[6]

def select_sort(alist):
    n = len(alist)
    # 外层控制比较几轮
    for j in range(n - 1):
        min_index = j
        # 内层控制元素比较和更新索引
        for i in range(j + 1, n):
            # 进行比较
            if alist[min_index] > alist[i]:
                # 更新索引
                min_index = i
        # 退出循环后,交换数据
        alist[j], alist[min_index] = alist[min_index], alist[j]
        if __name__ == '__main__':
   			 li = [3, 11, 26, 26, 7, 3, 9, 4]
    		print(li)
    		select_sort(li)
    		print(li)

4.时间复杂度
最优时间复杂度:O(n²)
最坏时间复杂度:O(n²)
稳定性:不稳定
5.评价
优点:移动次数少
缺点:比较次数多

四、插入排序

1.什么是插入排序
插入排序(Insertion Sort)是一种简单直观的排序算法。
插入排序算法的工作原理如下:
构建有序序列
在已排序序列中扫描未排序数据
找到相应位置并插入
2.插入排序的分析
排序过程:
在这里插入图片描述
3.插入排序的实现
插入排序

def insert_sort(alist):
    n = len(alist)
    # 外层循环控制从右边取多少元素
    for j in range(1, n):
        # i = [1,2,3...]
        i = j
        # 内存循环
        while i > 0:
            if alist[i] < alist[i - 1]:
                alist[i], alist[i - 1] = alist[i - 1], alist[i]
                # 控制循环结束
                i -= 1
            else:
                break


if __name__ == '__main__':
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    insert_sort(li)
    print(li)

4.时间复杂度
最优时间复杂度:O(n)
最坏时间复杂度:O(n²)
稳定性:稳定
5.评价
优点:稳定,比较快
缺点:比较次数不确定,数据量越大,该算法越渣

五、希尔排序

1.什么是希尔排序
希尔排序(Shell Sort)是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。
希尔排序是非稳定排序算法,是DL.Shell于1959年提出的。
希尔排序算法的工作原理如下:
把记录按下标的一定增量分组,对每组使用直接插入排序算法排序。
随着增量逐渐减少,每组包含的关键词越来越多。
当增量减至1时,整个文件恰被分成一组,算法便终止。
2.希尔排序的分析
排序过程:
增量用gap代表,第一次增量3是将数据分3组

3.希尔排序的实现

在这里插入图片描述

def shellSort(nums):
    # 设定步长
    step = len(nums)/2
    while step > 0:
        for i in range(step, len(nums)):
            # 类似插入排序, 当前值与指定步长之前的值比较, 符合条件则交换位置
            while i >= step and nums[i-step] > nums[i]:
                nums[i], nums[i-step] = nums[i-step], nums[i]
                i -= step
        step = step/2
    return nums


if __name__ == '__main__':
    nums = [9,3,5,8,2,7,1]
    print shellSort(nums)


"""
[1, 2, 3, 5, 7, 8, 9]
"""

4.时间复杂度
最优时间复杂度:根据步长序列的不同而不同,最优是1.3,根据数学运算算出的gap
最坏时间复杂度:O(n²)
稳定性:不稳定
5.评价
优点:平均时间短,数据移动少
缺点:不稳定

六、快速排序

1.什么是快速排序
快速排序(Quicksort),又称划分交换排序(partition-exchange sort)。
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。
整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序算法的工作原理如下:
从数列中挑出一个元素,称为"基准"(pivot)。
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。
在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
2.快速排序的分析
排序过程:
在这里插入图片描述
3.快速排序的实现
快排:first理解为第一个位置的索引,last是最后位置索引

def quick_sort(alist, first, last):
    # 递归终止条件
    if first >= last:
        return

        # 设置第一个元素为中间值
    mid_value = alist[first]
    # low指向
    low = first
    # high
    high = last
    # 只要low小于high就一直走
    while low < high:
        # high大于中间值,则进入循环
        while low < high and alist[high] >= mid_value:
            # high往左走
            high -= 1
        # 出循环后,说明high小于中间值,low指向该值
        alist[low] = alist[high]
        # high走完了,让low走
        # low小于中间值,则进入循环
        while low < high and alist[low] < mid_value:
            # low向右走
            low += 1
        # 出循环后,说明low大于中间值,high指向该值
        alist[high] = alist[low]
    # 退出整个循环后,low和high相等
    # 将中间值放到中间位置
    alist[low] = mid_value
    # 递归
    # 先对左侧快排
    quick_sort(alist, first, low - 1)
    # 对右侧快排
    quick_sort(alist, low + 1, last)


if __name__ == '__main__':
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    quick_sort(li, 0, len(li) - 1)
    print(li)

4.时间复杂度
最优时间复杂度:O(nlogn)
遍历每个数是O(n),访问每个数是O(logn),最终是O(nlogn)
可以转换为求二叉树深度的思想
最坏时间复杂度:O(n²)
稳定性:不稳定
5.评价
优点:效率高,数据移动比较少,数据量越大,优势越明显
缺点:不稳定

七、归并排序

1.什么是归并排序
归并排序(MergeSort)是采用分治法的一个非常典型的应用。
归并排序的思想就是先递归分解数组,再合并数组。
归并排序算法的工作原理如下:
将数组分解最小之后,然后合并两个有序数组。
比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。
然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。
2.归并排序的分析
排序过程:
在这里插入图片描述
3.归并排序的实现
归并排序

def merge_sort(alist):
    n = len(alist)

    # 递归结束条件
    if n <= 1:
        return alist

    # 中间位置
    mid = n // 2
    # 递归拆分左侧
    left_li = merge_sort(alist[:mid])
    # 递归拆分右侧
    right_li = merge_sort(alist[mid:])
    # 需要2个游标,分别指向左列表和右列表第一个元素
    left_point, right_point = 0, 0
    # 定义最终返回的结果集
    result = []
    # 循环合并数据
    while left_point < len(left_li) and right_point < len(right_li):
        # 谁小谁放前面
        if left_li[left_point] <= right_li[right_point]:
            # 放进结果集
            result.append(left_li[left_point])
            # 游标移动
            left_point += 1
        else:
            result.append(right_li[right_point])
            right_point += 1
    # 退出循环时,形成左右两个序列
    result += left_li[left_point:]
    result += right_li[right_point:]
    return result


if __name__ == '__main__':
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    sort_li = merge_sort(li)
    print(li)
    print(sort_li)

4.时间复杂度
最优时间复杂度:O(nlogn)
最坏时间复杂度:O(nlogn)
稳定性:稳定
5.评价
优点:稳定,数据量越大越优秀
缺点:需要额外空间
6.常见算法的效率比较

快速排序消耗空间因为每次递归时,要保持一些数据
最优情况:每一次平均分组的情况 O(logn)
最坏情况:退化为冒泡排序的情况 O(n)
堆排序是结合二叉树去做的

八、搜索

1.搜索引入
搜索是在一个数据集合中找到一个特定数据的算法
搜索通常的答案是真的或假的
搜索的常见方法有二分查找、哈希查找等
2.二分法查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好。
缺点是要求待查表为有序表
因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
二分查找的工作原理如下:
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功。
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

3.二分查找的实现
递归实现
非递归实现
递归的实现

def my_search(alist, item):
    n = len(alist)
    # 递归结束条件
    if n > 0:
        # 折半
        mid = n // 2
        # 判断中间元素是否为要查的元素
        if alist[mid] == item:
            return True
        # 判断中间元素与item的大小
        elif item < alist[mid]:
            # 继续递归查找
            return my_search(alist[:mid], item)
        else:
            return my_search(alist[mid + 1:], item)
    return False

非递归实现

def my_search2(alist, item):
    n = len(alist)
    # 起始,0
    first = 0
    # 结束位置
    last = n - 1
    while first <= last:
        # 折半
        mid = (first + last) // 2
        # 判断中间元素
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            last = mid - 1
        else:
            first = mid + 1
    return False


if __name__ == '__main__':
    # 2个注意点:必须用有序的顺序表
    li = [17, 20, 26, 31, 44, 54, 55, 77, 93]
    print(my_search(li, 17))
    print(my_search2(li, 111))

4.时间复杂度
最优时间复杂度:O(1)
最坏时间复杂度:O(logn)

总结

在这里插入图片描述

Python的各种算法 1. 冒泡排序: 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 def bubbleSort(arr): n = len(arr) # 遍历所有数组元素 for i in range(n): for j in range(0,... 阅读详情

相关推荐

Python笔记——Python基础:算法(非常详细)_python算法

一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法在运行过程中临时占用的存储空间随算法的不同而异,有的算法只需要占用少量的临时工作单元,而且不随问题规模的大小而改变,这种算法是节省存储的算法;定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}=0(f(n))。

a25847a的博客 1077

八大排序算法的Python实现

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

weixin_34391854的博客 1526

拿去用,常见几种加密算法的Python实现

生活中我们经常会遇到一些加密算法,今天我们就聊聊这些加密算法的Python实现。部分常用的加密方法基本都有对应的Python库,基本不再需要我们用代码实现具体算法。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:1097524789 一、MD5加密 全称:MD5消息摘要算法(英

Python学习Q群696455390 1390

python实现十大经典算法

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: 关于时间复杂度: 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。 O(n1+§)) 排序,§ 是介于

xyl的博客 1万+

ThreeJS教程:地图案例(包围盒、正投影)

推荐:将加入你的3D工具链。

jianshi2023的博客 1007

支付逻辑漏洞的八大姿势(上篇)

学习支付漏洞,看这篇文章!!!文章来源:SecHub网络安全社区(本资料仅供学习参考,严禁使用者进行未授权渗透测试!严禁任何形式的转载!

qq_39493066的博客 1358

python常用的算法_常见算法的python实现

近日在github上发现一个25000多star的仓库,把各种常见算法用python实现了,而且还有动图演示,非常值得推荐。仓库说明这个仓库用python语言实现了绝大部分算法,主要是用于教学目的,因此效率稍微低于工业界。内容说明包含了常见的算法的python实现,如二叉树、排序、查找等等。这些是算法工程师必须掌握的技能。文件目录动画演示冒泡排序桶排序快速排序典型代码(这个是冒泡排序的代码):fr...

weixin_39532628的博客 118

YOLOv8n模型导出ONNX的避坑指南:解决版本差异,正确生成TensorRT/RKNN所需输出节点

本文详细介绍了YOLOv8n模型导出ONNX格式的实战避坑指南,涵盖版本差异处理、代码修改技巧及TensorRT/RKNN部署优化方案。针对不同推理框架需求,提供输出节点生成、动态轴处理和后处理划分等核心问题的解决方案,帮助开发者高效完成模型部署。

weixin_33247358的博客 357

面试中常见的算法题和其python实现

在面试中,常见的算法题包括排序算法、查找算法、动态规划、贪心算法等。

言之。 1万+

catia之车灯设计——灯玻加厚之后(单层灯玻、多层灯玻的设计)

加厚完A面后如果主机厂没有给其他的面我们该怎么做?

qq_19829077的博客 1305

C#实战:从零搭建Vosk离线语音转文字系统

本文手把手教你用C#构建离线语音转文字系统,基于NAudio和Vosk实现全流程开发。首先介绍环境搭建,包括NuGet包安装和中文模型配置,强调16kHz单声道音频格式的关键性。接着详细解析音频预处理转换、Vosk模型初始化及识别过程的核心代码,提供多线程优化建议和实时识别扩展思路。文章包含80%以上代码注释,从常见问题排查到性能优化技巧,完整覆盖从"Hello World"到工业级部署的关键技术点,特别适合需要开发本地化语音识别应用的C#开发者。

墨夶的博客 752

常见算法Python实现

1排序 1.1选择法排序 ''' 第i轮排序完后,第i位的数字是之后所有数中的最小数 ''' def selectsort(lst,reverse=False): for i in range(len(lst)): m = i for j in range(i+1,len(lst)): exp = 'lst[m] &amp;amp;gt; lst[j]' if reverse: ex...

youyoudao 376

LangChain与LangGraph核心区别解析

LangChain与LangGraph是当前大语言模型(LLM)应用开发中两个紧密相关且极具影响力的开源框架。它们源于LangChain AI公司,设计哲学互补,旨在解决不同维度的LLM工程化问题,共同构成了构建复杂智能应用的强大工具集。

weixin_35774598的博客 1923

Python实现常见的排序算法

本章介绍使用Python实现场景的几种排序算法。分别有冒泡算法、快速排序、插入排序、希尔排序、选择排序、堆排序、归并排序、计数排序、桶排序、基数排序。

夜雨飘零 1085

6、线性时序逻辑到确定性自动机的翻译

本博文详细介绍了将线性时序逻辑(LTL)转化为确定性自动机的理论基础、技术方法和实际应用。内容涵盖LTL的基本运算符、确定性自动机的特点及其在模型检测中的作用,以及具体的翻译步骤与优化策略。通过实际案例展示了如何利用这一技术进行系统属性验证,并探讨了翻译过程中可能遇到的挑战及解决方案。

gpu4optimizer的博客 151

电磁兼容(EMC):一文读懂过电应力(EOS)

过电应力(EOS)是指元器件承受的电流或电压应力超过其允许的最大范围。产品的电磁兼容(EMC)失效的一种常见模型为过电应力(EOS),也是电子产品失效的最常见的情况之一。过电应力基本与半导体器件相关,EOS事件包括有:静电放电(ESD)、雷击、系统瞬态、电磁脉冲、充电等。本文将详细讨论一下产品设计中如何关注EOS设计。

linkking27的博客 6485

python什么是算法_Python之实现常见算法

一、 算法是什么?算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。二、 时间复杂度:时间复杂度是用...

weixin_39676348的博客 550

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python常见算法实现_常见算法的python实现

提到排序算法,常见的有如下几种:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序;查找算法最常见二分查找。这些算法的时间复杂度如下:算法名称时间复杂度(一般情况)冒泡排序O(n2)选择排序O(n2)插入排序O(n2)快速排序O(nlog2n)堆排序O(nlog2n)归并排序O(nlog2n)希尔排序O(1.3n)二分查找O(log2n)二分查找前提要求序列必须是有序的,所以下面我...

weixin_39897267的博客 163

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python实现常见算法的示例代码

本文提供了Python实现的常见算法示例,涵盖排序(归并排序、堆排序)、查找(线性查找、插值查找)、递归与回溯(全排列、斐波那契数列)、动态规划(最长公共子序列、0-1背包问题)以及图论算法(深度优先搜索)。每个算法都附带详细注释和测试用例,帮助理解核心思想与实现逻辑。这些示例展示了分治策略、记忆化优化、状态转移方程等关键技术,适用于算法学习与编程实践。

2501_93482746的博客 470

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

常见排序算法及Python实现

对于小规模数据,简单排序算法(冒泡、选择、插入)可能更高效对于大规模数据,应选择O(n log n)复杂度的算法(快速、归并、堆排序)快速排序在实践中通常表现最佳,但最坏情况性能较差归并排序提供稳定的O(n log n)性能,但需要额外空间堆排序不需要额外空间,但实现相对复杂且不稳定在实际开发中,Python内置的sorted()函数使用的是Timsort算法(归并排序和插入排序的混合体),在大多数情况下性能都非常优秀。

m0_53571279的博客 807

python实现几种常见的排序算法

yeyuanxiaoxin的博客 159

使用 Python 实现几种常见的排序算法

排序是非常常见的算法,今天就来分享几种常见排序算法的 Python 实现冒泡排序 冒泡排序是最为基础的排序算法,其核心思想就是相邻元素两两比较,把较大的元素放到后面,在一轮比较完成之后,...

zouhui1003it的专栏 149

常见排序算法-Python实现

常见排序算法-Python实现python排序算法1.二分法    python    32行ortant; font-family: monospace; white-space: pre;" >#coding=utf-8 def binary_search(input_array, value):  """Your code goes here."""  length = le

MARSGGBO的博客 338

python常见算法(chatgpt算法实现)

python实现的广度搜索算法、python实现高精度乘以低精度。python实现高精度除以低精度。python实现浮点数二分算法。python实现整数二分算法。python实现高精度加法。python实现高精度减法。python实现一维前缀和。python实现二维前缀和。python实现一维差分。python实现二维差分。python实现位运算。

B_planzp的博客 5536

常见排序算法的python实现

def bubble_sort(arry): n = len(arry) #获得数组的长度 for i in range(n): for j in range(1,n-i): if arry[j-1] > arry[j] : #如果前者比后者大 arry[j-1],arry[j] = arry[j],arry[j-1] #则交换两者 return

AnalogElectronic的博客 172
上一篇: 使用python manager.py db init无效,变成启动程序?
下一篇: flask中引用静态文件
流浮生
博客等级 码龄8年 54粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值