常见排序算法的python 代码实现_yetta3370的博客-程序员信息网_排序算法python代码

技术标签: 数据结构  

冒泡排序

[10,6,27,9,15,38,49,20]

原理

第一次排序:
[10,6,27,9,15,38,49,20]
[6,10,27,9,15,38,49,20]
[6,10,27,9,15,38,49,20]
[6,10,9,27,15,38,49,20]
[6,10,9,15,27,38,49,20]
[6,10,9,15,27,38,49,20]
[6,10,9,15,27,38,49,20]
[6,10,9,15,27,38,20,49]
第二次排序:
[6,10,9,15,27,38,20,49]
[6,10,9,15,27,38,20,49]
[6,9,10,15,27,38,20,49]
[6,9,10,15,27,38,20,49]
[6,9,10,15,27,38,20,49]
[6,9,10,15,27,38,20,49]
[6,9,10,15,27,20,38,49]
第三次排序:
[6,9,10,15,27,20,38,49]
[6,9,10,15,27,20,38,49]
[6,9,10,15,27,20,38,49]
[6,9,10,15,27,20,38,49]
[6,9,10,15,27,20,38,49]
[6,9,10,15,20,27,38,49]
第四次排序:
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
第五次排序:
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
第六次排序:
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
第七次排序:
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
第八次排序:
[6,9,10,15,20,27,38,49]

代码实现

def bubbleSort(lis):
    for i in range(0,len(lis)):
        for j in range(0,len(lis)-1-i):
            if(lis[j]>lis[j+1]):
                lis[j],lis[j+1]=lis[j+1],lis[j]
    return lis

插入排序

原理

[10,6,27,9,15,38,49,20]

[10,6,27,9,15,38,49,20]
[6,10,27,9,15,38,49,20]
[6,10,27,9,15,38,49,20]
[6,9,10,27,15,38,49,20]
[6,9,10,15,27,38,49,20]
[6,9,10,15,27,38,49,20]
[6,9,10,15,27,38,49,20]
[6,9,10,15,20,27,38,49]

代码实现

def insertSort(lis):
    for i in range(1,len(lis)):
        for j in range(0,i):
            if(lis[i]<lis[j]):
                lis.insert(j,lis[i])
                lis.pop(i+1)
                break
    return lis

快速排序

原理

[10,6,27,9,15,38,49,20]

[10,6,27,9,15,38,49,20]
[6,9,10,27,15,38,49,20]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]

代码实现

def quickSort(lis):
    if(len(lis)>1):
        mid=lis[0]
        left=[]
        right=[]
        lis.remove(mid)
        for num in lis:
            if num<=mid:
                left.append(num)
            else:
                right.append(num)
        return quickSort(left)+[mid]+quickSort(right)
    else:
        return lis

希尔排序

原理

[10,6,27,9,15,38,49,20]

[10,6,27,9,15,38,49,20]
步长为4:
[10,15] [6,38] [27,49] [9,20]
[10,6,27,9,15,38,49,20]
步长为2:
[10,27,15,49][6,9,38,20]
[10,15,27,49][6,9,20,38]
[10,6,15,9,27,20,49,38]
步长为1:
[6,9,10,15,20,27,38,49]

代码实现

def shellSort(lis):
    gap=len(lis)//2
    while gap>0:
        for i in range(gap,len(lis)):
            j=i
            while j>=0 and lis[j-gap]>lis[j]:
                lis[j-gap],lis[j]=lis[j],lis[j-gap]
                j=j-gap
        gap=gap//2
    return lis

选择排序

原理

[10,6,27,9,15,38,49,20]
[6,10,27,9,15,38,49,20]
[6,9,10,27,15,38,49,20]
[6,9,10,27,15,38,49,20]
[6,9,10,15,27,38,49,20]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]
[6,9,10,15,20,27,38,49]

代码实现

def selectSort(lis):
    i=0
    while i<len(lis)-1:
        minnum=lis[i]
        for j in range(i,len(lis)):
            if lis[j]<=minnum:
                minnum=lis[j]
        lis.remove(minnum)
        lis.insert(i,minnum)
        i+=1
    return lis
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42418847/article/details/107976846

智能推荐

浅谈微信开放平台_weixin_30916125的博客-程序员信息网

其实如果对微信公众平台有一定了解,那么一定不会将微信开放平台搞混。公众/开放平台的误解有人喜欢用受众不同,把它们区分为运营者或开发者的工具,公众平台是给运营者,而开放平台是面向开发者。这种说明挺误人子弟的,难道公众平台的受众就不包括开发者吗?难道开放平台就没有运营者的使用价值?强调受众来以此做区别,是本末倒置的说法!开放平台官方介绍移动应用开发接入微信开放平台,...

keras遇到DLL load failed: 找不到指定的模块。_KK_THREESTEP的博客-程序员信息网

Using TensorFlow backend.Traceback (most recent call last): File "C:\ProgramData\Anaconda3\envs\tf1.13\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in &lt;module&gt; from tensorflow.python.pywrap_tensorflow_internal import *

基于神经网络的智能RC小车(Python+OpenCV)_夜色的繁星的博客-程序员信息网

看代码时发现的一个有趣的例子,实现使用四大利器:Raspberry Pi + Arduino + OpenCV Neural Network + RC CAR硬件速览指示停车参考:https://github.com/hamuchiwa/AutoRCCar.git效果如下:绿灯行红灯停使用RC车,Raspberry...

python中numpy.zeros()函数_偶然is的博客-程序员信息网_np.zeros(4)

1.概述numpy 中一个用于创建 0 数组的 函数。2. zeros()2.1 语法numpy.zeros(shape, dtype=float, order=‘C’)2.2 参数shape —— 整型或者整数序列如 (2, 3) ,新数组的大小;dtype —— 数据类型,可选参数,默认float,当数据类型要为整型时dtype=np.int;order —— 是否在内存中以 C- 或 Fortran-contiguous(行或列)顺序存储多维数据。可选参数2.3 返回值返回来一个给

深度学习之 Keras vs Tensorflow vs Pytorch 三种深度学习框架_pytorch和tensorflow和keras_shichaog的博客-程序员信息网

深度学习是人工智能的子集,深度学习模仿人脑处理数据的神经通路,将其用于决策、检测对象、识别语音和翻译语言。它从非结构化和未标记的数据中学习,无需人工监督或干预。深度学习通过使用人工神经网络的层次结构来处理机器学习,人工神经网络的构建类似于人脑,神经元节点在网络中连接。虽然传统的机器学习程序使用线性数据分析,但深度学习的分层功能允许机器使用非线性方法处理数据。Keras vs Tensorflow vs Pytorch是深度学习的三种框架,先上结论,不同框架有其自身的优势,不同的人需求不一样,并没有一种框架

在anaconda里面引入keras,报'No module named 'tensorflow.python.eager'错误_zhaohuan_1996的博客-程序员信息网

situation:在anaconda里面安装了tensorflow和keras,但是在引入keras库时,报’No module named 'tensorflow.python.eager’错误。why:原因是keras和tensorflow的版本不匹配。通常是keras版本过高。solution:我在anaconda navigator中将keras的版本降低。再引入keras库来做测试...

随便推点

selenium模拟登录时报错 Message: element not interactable_qq_36800722的博客-程序员信息网_selenium模拟登陆时候报错

原因:一个输入框有两个input标签解决方案:先单点value提示字的input,然后显示真正要输入框的input,然后针对这个input,再次进行输入操作代码为:

Hp跟踪进程的工具tusc_cuininmi5584的博客-程序员信息网

今天在分析oracle startup 过程中hung的问题时,hp工程师使用了tusc工具,尝试后感觉很好,并作搜集如下:http://h20331.www2.hp.com/hpsub/cache/286022-0-0-2...

导入keras报错:module 'tensorflow.python.keras.backend' has no attribute 'get_graph'_处女座程序员的朋友的博客-程序员信息网

主要是因为tensorflow与keras的版本不兼容import tensorflowprint(tensorflow.__version__)Environments¶Below is the list of Deep Learning environments supported by FloydHub. Any of these can be specified...

数学建模学习笔记(二)——Topsis优劣解距离法_striveAgain丶的博客-程序员信息网

(续上篇文章)层次分析法的局限上一篇文章中,层次分析法有这样的局限评价决策层不能太多;数据是已知的的话,便无法使用层次分析法进行精确的分析评价;因此,为对这些情况做出更为精准的分析,我们可以使用Topsis优劣解距离法。Topsis优劣解距离法介绍Topsis优劣解距离法是一种综合评价方法,主要优点是能够充分利用原始数据来进行分析。主要步骤为:将原始数据正向化将正向化矩阵进行标准化(消除量纲的影响)计算样本数据与最大值、最小值的距离根据公式,利用距离计算未归一化的得分最后进行排

解决sudo update-initramfs -u 时报错_环氧的博客-程序员信息网_sudo update

解决 sudo update-initramfs -u 时报错update-initramfs: Generating /boot/initrd.img-5.4.0-56-generic ,I: The initramfs will attempt to resume from /dev/sda5,I: (UUID=ab57540b-8ad9-42e4-9248-77672ca486dc),I: Set the RESUME variable to override this.执行sudo update-

推荐文章

热门文章

相关标签