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

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

持续更新,采用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
分享
相关文章
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
179 1
|
1月前
|
算法系列之数据结构-二叉树
树是一种重要的非线性数据结构,广泛应用于各种算法和应用中。本文介绍了树的基本概念、常见类型(如二叉树、满二叉树、完全二叉树、平衡二叉树、B树等)及其在Java中的实现。通过递归方法实现了二叉树的前序、中序、后序和层次遍历,并展示了具体的代码示例和运行结果。掌握树结构有助于提高编程能力,优化算法设计。
59 9
 算法系列之数据结构-二叉树
|
1月前
|
算法系列之数据结构-Huffman树
Huffman树(哈夫曼树)又称最优二叉树,是一种带权路径长度最短的二叉树,常用于信息传输、数据压缩等方面。它的构造基于字符出现的频率,通过将频率较低的字符组合在一起,最终形成一棵树。在Huffman树中,每个叶节点代表一个字符,而每个字符的编码则是从根节点到叶节点的路径所对应的二进制序列。
67 3
 算法系列之数据结构-Huffman树
|
1月前
|
算法系列之数据结构-二叉搜索树
二叉查找树(Binary Search Tree,简称BST)是一种常用的数据结构,它能够高效地进行查找、插入和删除操作。二叉查找树的特点是,对于树中的每个节点,其左子树中的所有节点都小于该节点,而右子树中的所有节点都大于该节点。
85 22
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
114 29
C 408—《数据结构》图、查找、排序专题考点(含解析)
408考研——《数据结构》图,查找和排序专题考点选择题汇总(含解析)。
122 29
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
144 25
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
116 23
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
179 67
【C++数据结构——内排序】二路归并排序(头歌实践教学平台习题)【合集】
本关任务是实现二路归并算法,即将两个有序数组合并为一个有序数组。主要内容包括: - **任务描述**:实现二路归并算法。 - **相关知识**: - 二路归并算法的基本概念。 - 算法步骤:通过比较两个有序数组的元素,依次将较小的元素放入新数组中。 - 代码示例(以 C++ 为例)。 - 时间复杂度为 O(m+n),空间复杂度为 O(m+n)。 - **测试说明**:平台会对你编写的代码进行测试,提供输入和输出示例。 - **通关代码**:提供了完整的 C++ 实现代码。 - **测试结果**:展示代码运行后的排序结果。 开始你的任务吧,祝你成功!
103 10
下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等