直接上代码
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#pragma warning(disable:4996);
void bubble_sort(int array[], int num) //传入数组元素
{
int i, j, temp;
for (j = 0; j < num - 1; j++) //n个元素进行n-1次比较
for (i = 0; i < num - 1 - j; i++)
if (array[i] > array[i + 1]) //比较两个元素的大小如果排序不正确就就交换次数
{
temp = array[i]; array[i] = array[i + 1]; array[i + 1] = temp;//这里是两个元素交换次序
}
}
int main() {
int array[] = { 7,9,0,3,4,5,2};//定义一个int型数组
int i ;
bubble_sort(array, 7);//调用冒泡排序
for (i=0; i <= 6; i++)//按数组下标输出排序好的有序序列
printf("[%d]", array[i]);
system("pause");
return 0;
}
伪代码来自算法设计与分析
array 1..n of integer
var i,j:integer;
begin
for i=1 to n-1 do
for j=n to i+1 do
if a[j]<a[j-1] then swap (a[j],a[j-1])
end
分析时间复杂度
最坏的情况下:T(n)=O(n^2)
冒泡排序的执行过程
假设上面那个数组是中的元素代表这是7个学生参加的社团数量。
现在要对他们进行排序计算机不知道他们的大小。
这里冒泡排序算法就按刚开始的顺序对他们进行两两比较。
将数组第一个元素和第二个元素进行比较,在将比较完排好序的第二个元素和第三个进行比较,直到和最后一个元素进行比较。
也就是相当于让排在第一位的学生和第二位学生比较一下参加社团的数量。
然后依次比较这样比较完后可以保证第一个同学所参加的社团数量最少。
然后第二次排序就可以直接从第二个学生开始比较依次类推,最多进行n-1轮比较。