| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【考研】数据结构考点——冒泡排序(含408真题) -> 正文阅读 |
|
[数据结构与算法]【考研】数据结构考点——冒泡排序(含408真题) |
?前言?本文内容源于对《数据结构(C语言版)》(第2版)、王道讲解学习所得心得、笔记整理和总结。 交换排序的基本思想:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求时则进行交换,直到整个序列全部满足要求为止。 交换排序的主要两种方法:冒泡排序、快速排序 本文内容主要针对冒泡排序。 在本文最后的练习的中,以举例子说明该排序方法,配以图文,讲解详细(含408真题)。 本文“干货”较足,建议收藏。 可搭配以下链接一起学习: 【考研】数据结构考点——快速排序(重点,含408真题)_住在阳光的心里的博客-CSDN博客 【考研复习:数据结构】查找(不含代码篇)_住在阳光的心里的博客-CSDN博客 【考研】《数据结构》知识点总结.pdf_考研数据结构知识点总结背诵-其它文档类资源-CSDN文库 【考研】数据结构考点——直接选择排序_住在阳光的心里的博客-CSDN博客 目录一、冒泡排序(Bubble Sort)的定义是一种最简单的交换排序方法,它通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上 “漂浮”(左移),或者使关键字大的记录如石块一样逐渐向下“坠落”(右移)。 二、算法步骤及代码(一)算法步骤(此处是升序)1、设待排序的记录存放在数组 r[1..n] 中。 首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序( 即 L.r[1].key > L.r[2].key ),则交换两个记录。然后比较第二个记录和第三个记录的关键字。依次类推,直至第 n - 1 个记录和第 n 个记录的关键字进行过比较为止。 上述过程称作第一趟起泡排序,其结果使得关键字最大的记录被安置到最后一个记录的位置上。 2、然后进行第二趟起泡排序,对前 n - 1 个记录进行同样操作,其结果是使关键字次大的记录被安置到第 n - 1 个记录的位置上。 3、重复上述比较和交换过程,第 i 趟是从 L.r[1] 到 L.r[n-i+1]?依次比较相邻两个记录的关键字,在“逆序”时交换相邻记录,其结果是这 n - i + 1 个记录中关键字最大的记录被交换到第 n - i + 1 的位置上。直到在某一趟排序过程中?有进行过交换记录的操作,说明序列已全部达到排序要求,则完成排序。 (二)算法代码
三、算法分析及特点(一)算法分析1、时间复杂度 最好情况(初始序列为正序):只需进行一趟排序, 在排序过程中进行 n - 1 次关键字间的比较,且不移动记录。 最坏情况(初始序列为逆序):需进行 n - 1 趟排序,总的关键字比较次数 KCN 和记录移动次数RMN (每次交换都要移动 3 次记录)分别为 所以,在平均情况下,冒泡排序关键字的比较次数和记录移动次数分别约为? 和??,时间复杂度为 。 2、空间复杂度 冒泡排序只有在两个记录交换位置时需要一个辅助空间用做暂存记录,所以空间复杂度 (二)算法特点1、稳定排序。 2、可用于链式存储结构。 3、移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n 较大时, 四、练习
解:如下图。 ?待排序的记录总共有 8 个,但算法在第六趟排序过程中没有进行过交换记录的操作,则完成
可以摘取第一题(元素无序)的部分分析图,比较次数在表格最右列。 第一趟排序,一共比较了 n - 1 次。 第二趟排序,一共比较了 n - 2 次。 …… 最后一趟比较1次。 则有??
解:冒泡排序方法,在每趟排序中,均可找到最大或者最小的元素。在本题中,可以每一趟排序中,找到最大元素。? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:41:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |