很多站长朋友们都不太清楚冒泡排序php原理,今天小编就来给大家整理冒泡排序php原理,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 冒泡排序的原理 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) 。
冒泡排序代码
希望对您有所帮助!~
冒泡排序冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。
冒泡排序:
有两种,
一种是小泡向上冒,
一种是大泡向下沉。
首先,设待排序长为n,
从后往前(从前向后)两两比较相邻元素的值,若为逆序, (a[i-1]>a[i]),则交换他们,直到序列比较结束。
交换过程中,会将较大的元素一直向后移动,故,会将最大的元素移动到最终的位置上
这样就称为一次冒泡过程
为啥是n-1呢
因为排到最后,只剩两个数了,我们只需要比较一次,即可得到这两个数的有序序列。
9个数第一次需要比较8次,因为当只有两个数的时候,比较一次即可排出顺序。且每次比较都会少比较一次,因为每次比较都会使得一个数归位。所以一共比较8+7+6+5+4+3+2+1次,
冒泡排序是死的次数,最坏最好的情况冒泡排序都会进行相邻的比较。区别在于最好的情况每次比较不交换元素,最坏的情况每次都会交换相邻元素而已
通过设计flag来减少冒泡的次数。
关于冒泡排序php原理的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于冒泡排序php原理 php实现冒泡排序算法的详细内容...