欢迎访问宙启技术站
智能推送

冒泡排序算法详解

发布时间:2023-07-04 15:29:09

冒泡排序是一种简单但效率较低的排序算法。它的基本思想是通过相邻元素之间的比较和交换,将大的元素逐渐移到数组的末尾。

具体算法描述如下:

1. 从数组的第一个元素开始,比较相邻的两个元素,如果第一个元素较大,则交换这两个元素的位置,否则不交换。

2. 继续比较第二个和第三个元素,以此类推,直到最后一个元素。

3. 重复步骤1和步骤2,直到没有需要交换的元素。

下面以一个示例来说明冒泡排序的运行过程。

假设给定数组为[5, 3, 8, 2, 1],首先进行第一次比较和交换:

比较5和3,5大于3,交换位置,数组变为[3, 5, 8, 2, 1];

比较5和8,5小于8,不交换位置,数组不变;

比较8和2,8大于2,交换位置,数组变为[3, 5, 2, 8, 1];

比较8和1,8大于1,交换位置,数组变为[3, 5, 2, 1, 8];

第一轮结束后,数组的最后一个元素8已经排好序。进行第二轮比较和交换:

比较3和5,3小于5,不交换位置,数组不变;

比较5和2,5大于2,交换位置,数组变为[3, 2, 5, 1, 8];

比较5和1,5大于1,交换位置,数组变为[3, 2, 1, 5, 8];

第二轮结束后,数组的倒数第二个元素5已经排好序。进行第三轮比较和交换:

比较3和2,3大于2,交换位置,数组变为[2, 3, 1, 5, 8];

比较3和1,3大于1,交换位置,数组变为[2, 1, 3, 5, 8];

第三轮结束后,数组的倒数第三个元素3已经排好序。进行第四轮比较和交换:

比较2和1,2大于1,交换位置,数组变为[1, 2, 3, 5, 8];

第四轮结束后,数组的倒数第四个元素2已经排好序。最后进行第五轮比较,发现没有需要交换的元素,排序结束。

经过5轮比较和交换,数组变为[1, 2, 3, 5, 8],达到了升序排列的目的。

冒泡排序的时间复杂度为O(n^2),其中n为数组的长度。因为在最坏的情况下,需要进行n-1轮比较,每轮比较需要比较n-i次,所以总的比较次数为(n-1)+(n-2)+...+1= n(n-1)/2,约等于n^2。