【数据结构与算法】排序算法的稳定性与冒泡排序的实现

简介: 【数据结构与算法】排序算法的稳定性与冒泡排序的实现

持续更新,采用python进行演示,排序算法篇,包含冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序。

数据与算法

1:数据结构:数据结构是一种特定的计算机储存,组织数据的方式。宗旨是使计算机能够高效的使用数据。


越强大的计算机 ------>越复杂的数据结构


2:抽象的数据类型(ADT):数列,列表树,表格…


对于某一类型的户数或者是某一个数据集的描述以及对该数据的各种操作。


ADTs拥有干净的接口,其具体的实施细节是封装起来的


算法

算法:算法是能够在有限时间内解决一系列问题的清晰指令


效率 1:时间 2:空间


目标

1:能够识别程序要求的功能以解决当前的任务


2:设计能够高效解决此任务的数据结构与算法


3:评价该方案的效率和正确性


思路 分析时间复杂度空间复杂度


排序算法

排序算法:是一种能将一串数据依照特定顺序进行排列的一种算法。


image.pngimage.pngimage.pngimage.pngimage.pngimage.png冒泡排序思想分析:

冒牌排序作为排序算法中最简单的一种。冒泡顾名思义当一个气泡从水中缓慢冒出的时候会慢慢变大,冒泡排序根据的就是这个思想。一个数组,通过循环的控制,将第一个数字与第二个数字进行比较,如果第一个数字比第二个数字大,那么久交换位置,直到将数组的全部数字比较完。这个时候数组的最后一个数字就是这个数组对打的数字。根据这个思想,最后的数字动,上下的数字依次进行比较,从而达到排序效果


冒泡排序代码实现

冒泡排序代码实现

def bubble_sort(alist):    #第二个for循环就是从头走到尾进行交换,第一个for循环就是让第一个循环第一次交      换之后从n-1变成n-2

   '''冒泡排序'''

   n=len(alist)

   for j in range(0,n-1):                                     #for i in range(5)输出0,1,2,3,4

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

       

           if alist[i]>alist[i+1]:

               alist[i],alist[i+1]=alist[i+1],alist[i]

             

# j=1 (0,n-1)   j=2 (0,n-1-1)    j=3 (0,n-1-1-1)                


if __name__=="__main__":

     li=[34,23,45,97,78,234,29]

     print(li)

     bubble_sort(li)

     print(li)                            

   

输出:

[34, 23, 45, 97, 78, 234, 29]

[23, 29, 34, 45, 78, 97, 234]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


image.png

image.png

image.png

目录
打赏
0
0
0
0
10
分享
相关文章
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
112 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
147 67
【C++数据结构——内排序】二路归并排序(头歌实践教学平台习题)【合集】
本关任务是实现二路归并算法,即将两个有序数组合并为一个有序数组。主要内容包括: - **任务描述**:实现二路归并算法。 - **相关知识**: - 二路归并算法的基本概念。 - 算法步骤:通过比较两个有序数组的元素,依次将较小的元素放入新数组中。 - 代码示例(以 C++ 为例)。 - 时间复杂度为 O(m+n),空间复杂度为 O(m+n)。 - **测试说明**:平台会对你编写的代码进行测试,提供输入和输出示例。 - **通关代码**:提供了完整的 C++ 实现代码。 - **测试结果**:展示代码运行后的排序结果。 开始你的任务吧,祝你成功!
29 10
【C++数据结构——内排序】希尔排序(头歌实践教学平台习题)【合集】
本文介绍了希尔排序算法的实现及相关知识。主要内容包括: - **任务描述**:实现希尔排序算法。 - **相关知识**: - 排序算法基础概念,如稳定性。 - 插入排序的基本思想和步骤。 - 间隔序列(增量序列)的概念及其在希尔排序中的应用。 - 算法的时间复杂度和空间复杂度分析。 - 代码实现技巧,如循环嵌套和索引计算。 - **测试说明**:提供了测试输入和输出示例,帮助验证代码正确性。 - **我的通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了代码运行的测试结果。 通过这些内容,读者可以全面了解希尔排序的原理和实现方法。
40 10
|
10天前
|
【C++数据结构——内排序】快速排序(头歌实践教学平台习题)【合集】
快速排序是一种高效的排序算法,基于分治策略。它的主要思想是通过选择一个基准元素(pivot),将数组划分成两部分。一部分的元素都小于等于基准元素,另一部分的元素都大于等于基准元素。然后对这两部分分别进行排序,最终使整个数组有序。(第一行是元素个数,第二行是待排序的原始关键字数据。本关任务:实现快速排序算法。开始你的任务吧,祝你成功!
30 7
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
45 0
数据结构与算法学习十四:常用排序算法总结和对比
排序算法--冒泡排序
排序算法--冒泡排序
28 0
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
43 0

热门文章

最新文章