冒泡排序怎么排,冒泡排序怎么排的

http://www.itjxue.com  2023-01-07 08:09  来源:未知  点击次数: 

排序算法(一)冒泡排序

这次本来准备的面试视频内容,图皆来自网上。感谢万能的网友

基本描述:冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

1.比较相邻的元素。如果第一个比第二个大,就交换它们两个;

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

3.针对所有的元素重复以上的步骤,除了最后一个;

4.重复步骤1-3,直到排序完成。

例子

上面这种写法还有一个问题,就是每次都是从左边到右边进行比较,这样效率不高,你要考虑当最大值和最小值分别在两端的情况。写成双向排序提高效率,即当一次从左向右的排序比较结束后,立马从右向左来一次排序比较。 这种方法也称之为双向冒泡排序。

1.先对数组从左到右进行冒泡排序(升序),则最大的元素去到最右端

2.再对数组从右到左进行冒泡排序(降序),则最小的元素去到最左端

3.以此类推,依次改变冒泡的方向,并不断缩小未排序元素的范围,直到最后一个元素结束

例子

今天学习的是排序算法中最常见的冒泡算法。

冒泡排序算法的特点是将相邻的两个数排序找到最大的数,然后像气泡一样浮到顶端,这个算法有一个缺点,不论先前排序如何,每次只确定一个最大值。

鸡尾酒排序是冒泡排序的一种改进算法,即,第一轮排序找最大值类似气泡一样浮到顶端,然后从顶端找最小值,类似石头一样沉到底端。

在飞的小猪

冒泡排序算法有几种写法?

冒泡排序算法有两种,一种是从大到小排,另一种是从小到大排。

冒泡排序依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

冒泡排序最核心的思想就是相邻的两个元素相比较,符合冒泡的才冒泡,重复多次执行,待最后没有需要冒泡的元素时才停止执行,表示排序已经完成。

冒泡排序也是一种稳定排序算法。因为冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变。

冒泡排序

冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

冒泡排序:

有两种,

一种是小泡向上冒,

一种是大泡向下沉。

首先,设待排序长为n,

从后往前(从前向后)两两比较相邻元素的值,若为逆序, (a[i-1]a[i]),则交换他们,直到序列比较结束。

交换过程中,会将较大的元素一直向后移动,故,会将最大的元素移动到最终的位置上

这样就称为一次冒泡过程

为啥是n-1呢

因为排到最后,只剩两个数了,我们只需要比较一次,即可得到这两个数的有序序列。

9个数第一次需要比较8次,因为当只有两个数的时候,比较一次即可排出顺序。且每次比较都会少比较一次,因为每次比较都会使得一个数归位。所以一共比较8+7+6+5+4+3+2+1次,

冒泡排序是死的次数,最坏最好的情况冒泡排序都会进行相邻的比较。区别在于最好的情况每次比较不交换元素,最坏的情况每次都会交换相邻元素而已

通过设计flag来减少冒泡的次数。

(责任编辑:IT教学网)

更多

推荐ASP教程文章