冒泡排序
1、排序方法
将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
(1)初始
R[1..n]为无序区。
(2)第一趟扫描
从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。
第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。
(3)第二趟扫描
扫描R[2..n]。扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上……
最后,经过n-1趟扫描可得到有序区R[1..n]
注意:
第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R[i]上,结果是R[1..i]变为新的有序区。
转自:http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.3.1.1.htm
分享到:
相关推荐
在本案例中,我们讨论的是用C++实现冒泡排序的方法。 C++是面向对象的编程语言,尽管冒泡排序更常与C语言关联,但其实它同样适用于C++。C++提供了丰富的库函数和语法特性,使得编写排序算法更为便捷。下面,我们将...
4. **排序和查找算法**:快速排序、归并排序、堆排序、冒泡排序、插入排序、二分查找等。这些算法在处理大量数据时非常重要。 5. **动态规划和贪心算法**:这些算法常用于解决优化问题,源代码可能会包含一些典型的...
此外,书中的一个重要部分是关于排序和搜索算法的讲解,如冒泡排序、选择排序、插入排序、快速排序、归并排序、二分查找等。这些算法不仅对理解数据结构至关重要,也是实际编程中经常使用的工具。 在C++描述部分,...
《数据结构、算法与应用——C++语言描述》是一本深入探讨计算机科学核心领域的经典教材。数据结构和算法是编程的基础,它们对于理解和优化程序性能至关重要。本书通过C++语言来阐述这些概念,使得读者能够更好地掌握...
冒泡排序是一种基础的排序算法,它通过重复遍历待排序的数组,比较相邻元素并交换位置,使得每个元素都能逐步“浮”到其正确的位置上。在C语言中实现冒泡排序,我们可以理解以下几个关键点: 1. **基本概念**: - ...
冒泡排序是最基础的排序算法之一,通过不断交换相邻的错误位置元素来达到排序的目的。它的时间复杂度为O(n^2),在大数据量时效率较低。 2. **选择排序(Selection Sort)** 选择排序每次找到当前未排序部分中最小...
冒泡排序是一种历史悠久且直观的排序算法,它通过简单比较和交换操作来逐步将数列中最大或最小的元素移动到数列的前端,直到所有元素都处于正确的位置。在C语言的编程学习中,冒泡排序的实现不仅帮助初学者理解基本...
在C++中实现起泡排序,我们可以定义一个函数,该函数接受一个整型数组和数组的长度作为参数。以下是起泡排序的基本步骤: 1. **初始化**: 设置一个标志变量`swapped`,用于记录在一次完整的遍历中是否有元素交换过...
常见算法包括排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)、搜索(如线性搜索、二分搜索)、图算法(如深度优先搜索、广度优先搜索、最短路径算法Dijkstra、Floyd-Warshall)、动态规划等。...
书中深入讲解了排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)、查找算法(顺序查找、二分查找、哈希查找)以及图算法(深度优先搜索、广度优先搜索、最短路径算法如Dijkstra和Floyd算法...
首先,我们来讨论最基本的排序算法——冒泡排序。冒泡排序通过重复遍历待排序的数列,比较每对相邻元素,如果顺序错误则交换,直到遍历结束为止。它的主要优点是实现简单,但对于大数据集来说,效率较低。 接下来是...
本书涵盖了一系列经典的算法,如排序(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)和搜索(线性搜索、二分查找)。这些算法在实际编程中有着广泛的应用,对提高代码效率至关重要。 3. C++语言描述...
算法部分涵盖了排序(如冒泡排序、快速排序、归并排序、堆排序等)、查找(线性查找、二分查找、哈希查找)、图论(最短路径、拓扑排序)和递归等主题。排序算法是数据处理的基础,它们在效率上各有千秋,快速排序在...
3. **排序与搜索算法**:书中可能会讲解各种排序算法(冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等)和搜索算法(顺序搜索、二分搜索、深度优先搜索、广度优先搜索等)。排序算法用于整理数据,而...
《C++/JAVA集中上机》实习报告——图示冒泡排序.pdf 本文档是关于C++/JAVA集中上机的实习报告,主要介绍了图示冒泡排序算法的设计和实现。下面是从标题、描述、标签和部分内容中提取的相关知识点: 一、课程设计的...
此外还给出了基于 C++ 编程语言的具体实现示例,有助于加深对冒泡排序机理的理解。 适合人群:对于想要了解经典排序算法——冒泡排序的技术背景人员、初学者程序员和算法爱好者来说非常适合。 使用场景及目标:①...
常见的算法包括排序(如冒泡排序、快速排序、归并排序)、搜索(如二分查找、深度优先搜索、广度优先搜索)、图算法(如Dijkstra最短路径算法、Floyd-Warshall所有对最短路径算法)等。在C++中,我们可以利用模板类...
冒泡排序法的思想是:从头到尾比较相邻的两个元素,将小的换到前面,大的换到后面。经过了从头到尾的一趟比较,就把最大的元素交换到了最后一个位置。依此类推,经过第n-