冒泡排序法是什么
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序
经典排序之冒泡排序
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。
大家一定都喝过汽水,汽水中常常有许多小小的气泡,哗啦哗啦飘到上面来。这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。而我们的冒泡排序之所以叫做冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
具体如何来移动呢?让我们来看一个栗子:
请点击输入图片描述
有8个数组成一个无序数列:5,8,6,3,9,2,1,7,希望从小到大排序。按照冒泡排序的思想,我们要把相邻的元素两两比较,根据大小来交换元素的位置,过程如下:
首先让5和8比较,发现5比8要小,因此元素位置不变。
接下来让8和6比较,发现8比6要大,所以8和6交换位置。
请点击输入图片描述
请点击输入图片描述
继续让8和3比较,发现8比3要大,所以8和3交换位置。
请点击输入图片描述
请点击输入图片描述
继续让8和9比较,发现8比9要小,所以元素位置不变。
接下来让9和2比较,发现9比2要大,所以9和2交换位置。
请点击输入图片描述
请点击输入图片描述
接下来让9和1比较,发现9比1要大,所以9和1交换位置。
请点击输入图片描述
请点击输入图片描述
最后让9和7比较,发现9比7要大,所以9和7交换位置。
请点击输入图片描述
请点击输入图片描述
这样一来,元素9作为数列的最大元素,就像是汽水里的小气泡一样漂啊漂,漂到了最右侧。
这时候,我们的冒泡排序的第一轮结束了。数列最右侧的元素9可以认为是一个有序区域,有序区域目前只有一个元素。
请点击输入图片描述
下面,让我们来进行第二轮排序:
首先让5和6比较,发现5比6要小,因此元素位置不变。
接下来让6和3比较,发现6比3要大,所以6和3交换位置。
请点击输入图片描述
请点击输入图片描述
继续让6和8比较,发现6比8要小,因此元素位置不变。
接下来让8和2比较,发现8比2要大,所以8和2交换位置。
请点击输入图片描述
接下来让8和1比较,发现8比1要大,所以8和1交换位置。
请点击输入图片描述
请点击输入图片描述
继续让8和7比较,发现8比7要大,所以8和7交换位置。
请点击输入图片描述
请点击输入图片描述
第二轮排序结束后,我们数列右侧的有序区有了两个元素,顺序如下:
请点击输入图片描述
至于后续的交换细节,我们这里就不详细描述了,第三轮过后的状态如下:
请点击输入图片描述
第四轮过后状态如下:
请点击输入图片描述
第五轮过后状态如下:
请点击输入图片描述
第六轮过后状态如下:
请点击输入图片描述
第七轮过后状态如下(已经是有序了,所以没有改变):
请点击输入图片描述
第八轮过后状态如下(同样没有改变):
请点击输入图片描述
到此为止,所有元素都是有序的了,这就是冒泡排序的整体思路。
原始的冒泡排序是稳定排序。由于该排序算法的每一轮要遍历所有元素,轮转的次数和元素数量相当,所以时间复杂度是O(N^2) 。
冒泡排序代码
希望对您有所帮助!~
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数
经典排序之冒泡排序
冒泡排序法是如何排序的???
冒泡排序算法的原理:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到没有...
什么是冒泡法?
冒泡法也就是冒泡排序,是一种计算机科学领域的较简单的排序算法。冒泡排序也就是需要重复地走访过要排序的元素列,然后挨个比较两个相邻的元素,如果他们的顺序出现错误的情况就可以把他们交换过来。
什么是冒泡法?
冒泡法是一种简单的排序算法。冒泡法是一种基于相邻元素比较的排序算法。它的工作原理是重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。这个过程会一直持续进行,直到整个数列都变成有序状态为止。在这个过程中,较小的元素会逐渐“浮”到数列的顶端,就像小的...
五种常见的排序方法
一、冒泡排序 冒泡排序是一种简单的排序算法,它的基本思想是将相邻的元素 两两比较,如果前面的元素大于后面的元素,则交换它们的位置,一 遍下来可以将最大的元素放在最后面。重复这个过程,每次都可以确 定一个最大的元素,直到所有的元素都排好序为止。冒泡排序的时间 复杂度为 O(n^2),空间复杂...
排列数字的方法有哪些
冒泡排序是一种简单的排序算法。它重复地遍历待排序的元素,比较相邻元素,如果它们的顺序不正确就交换它们,直到没有交换为止。这个过程不断将最大的元素"冒泡"到最后。冒泡排序的时间复杂度为O(n^2),在大数据集上性能较差。二、选择排序法 选择排序是一种简单的不稳定排序算法。它找到待排序数据中的...
什么叫做冒泡排序?
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。大家一定都喝过汽水,汽水中常常有许多小小的气泡,哗啦哗啦飘到上面来。这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。而我们的冒泡排序之所以叫做冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身...
冒泡法是怎么做的?
其实对于n个的话,你要求降低排列,但是偏偏都是升序的数字;最坏的情况就是如此:次数为:n-1+n-2...+1=n*(n-1)\/2。C语言冒泡排序法详解 1、要想编出程序来,首先我们必须了解冒泡排序法的意思:比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素进行同样的操作,...
如何排序数组中两个数的大小?
1. 冒泡排序法:冒泡排序法是一种基础排序算法,通过比较相邻元素的大小来逐渐交换它们的位置,可以将最大或最小的元素移动到数组的末尾或开头。对于只有两个元素的数组,只需要进行一次比较和交换就可以确定它们的大小关系。2. 快速排序法:快速排序法是一种高效的排序算法,通过选取一个基准值,将数组...
排序有哪些方法
排序的方法有很多种。一、冒泡排序 这是一种简单的排序算法。它重复地遍历待排序的列表,比较每对相邻的项,如果它们的顺序错误就把它们交换过来。这个过程会对每一对相邻项都进行,从开始第一对到最后的最后一对,这样在最后的列表中,最大的数会经过交换被放到最后的位置。二、选择排序 选择排序也是...
C语言冒泡排序法是什么?
冒泡排序法,是C语言常用的排序算法之一,意思是对一组数字进行从大到小或者从小到大排序的一种算法。具体方法是:相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到...
纳窦正红: 冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序...
西充县19547389789: 什么是冒泡排序法? - ?
纳窦正红: 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法...
西充县19547389789: 什么是冒泡排序法?能说具体点吗? - ?
纳窦正红: 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最...
西充县19547389789: 冒泡排序是什么? - ?
纳窦正红: 冒泡排序,是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 冒泡排序算法运作原理: 1. 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3. 针对所有的元素重复以上的步骤,除了最后一个. 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较.
西充县19547389789: 什么是冒泡法? - ?
纳窦正红: 冒泡法也就是冒泡排序,是一种计算机科学领域的较简单的排序算法.冒泡排序也就是需要重复地走访过要排序的元素列,然后挨个比较两个相邻的元素,如果他们的顺序出现错误的情况就可以把他们交换过来. 扩展资料: 冒泡排序算法的原理如下: 1、比较相邻的元素. 2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对. 3、针对所有的元素重复以上的步骤,除了最后一个. 4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 参考资料:搜狗百科-冒泡排序
西充县19547389789: 什么是冒泡法?[详细的讲下] - ?
纳窦正红: 你说的是冒泡排序把,冒泡排序就是让第一个数和第二个数比较,第一个数再和第三个数进行比较,直到比较到最后一个,根据你所需要的排序是升序还是降序,然后交换,也就是"冒泡"了int temp;for(int i = 0; i < a.length-1; ++i){ /*for中条...
西充县19547389789: 什么叫冒泡排序法?
纳窦正红: 简单通俗的说,假如要将n个数从大到小排列,那就将第一个数和后面的每一个数比较,每次比较后把大的赋给第一个数;然后再拿第二个数和后面的每个数比较,每次比较后把大的赋给第二个数;再按规律继续比较.比较的次数也就是(n-1)+(n-2)+(n-3)...+(1).
西充县19547389789: 冒泡法排序是怎么回事 - ?
纳窦正红: 5 4 3 2 1 比如上面这5个数字我们把它按照由小到大的顺序排列,从前往后相临两位比较大小,如果前一位比后一位大就把它俩 换位,5比4大就把5和4换位,得到45321 5又比3大 5和3换位 得到43521 依次类推最后得到43215 这样就把最大的一...
西充县19547389789: 关于冒泡排序法?
纳窦正红: Dim i, j, n As Integer Dim a(20) n = InputBox("输入", "多少个数") For i = 1 To n a(i) = InputBox("输入", "第+str(i)+个数") Next i For i = 1 To n - 1 For j = 1 To 20 - i If a(i) < a(j + 1) Then a(0) = a(i) a(i) = a(j) a(j) = a(0) End If Next j Next j For i = 1 To n Print a(i) Next i就是跟气泡一样,从底下向上冒,实现从小到大,或者从大到小的排序,是排序中比较基本的算法之一.
西充县19547389789: 最标准的冒泡排序法 - ?
纳窦正红: Procedure BubbleSort(Var R : FileType) //从下往上扫描的起泡排序// Begin For I := 1 To N-1 Do //做N-1趟排序// begin NoSwap := True; //置未排序的标志// For J := N - 1 DownTo 1 Do //从底部往上扫描// begin If R[J+1]< R[J] Then //交换元素// begin...