一、简介
冒泡排序(Bubble Sort)的名字由来是因为越小(或者越大)的元素回经由交换慢慢“浮”到数列的顶端,就像气泡一样。
二、过程
冒泡排序的执行过程大致是:一次比较相邻的两个数,将小的放在前面,大的放在后面。具体操作步骤:
1.首先比较第1个数和第2个数,将小的放在前面,大的放在后面。比较第2个数和第3个数,将小的放在前面,大的放在后面,重复执行该操作,直到比较到最后两个数,第一轮结束。
2.仍然是从第一对数开始比较,将小的放在前面,大的放在后面,一只比较到倒数第2个数,第2轮方可结束。
3.重复执行上述操作直到完成排序。
下面是一个动图,大家可以通过这个动图来更好的理解冒泡排序。
三、代码
int arr[] = { 1,3,5,7,9,2,4,6,8 }; // 待排序数组
int cnt = sizeof(arr) / sizeof(int); // 数组长度
void bubble_sort()
{
for (int i = 0; i < cnt; ++i)
{
for (int j = 0; j < cnt - 1 - i; ++j)
{
if (arr[j] > arr[j + 1]) // 从小排到大
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
时间复杂度:最坏情况:O(N^2)
最好情况:O(N)
空间复杂度:O(1)