1、冒泡排序的特点
- 冒泡排序是稳定排序,只有当两个元素不同时才会交换
- 冒泡排序是原址排序,不需要借助额外的空间
- 由于每次都要遍历整个数组,两个循环,所以冒泡排序的时间复杂度为
2、冒泡排序的基本思想
从头开始比较相邻的元素,如果后面的比前面的小,就交换。通过第一次循环找到最大的元素,并将其放在数组的最后位置。依次循环,直至数组中的所有元素都排好序。
3、代码示例
#include<iostream>
#include<string>
using namespace std;
//************* 冒泡排序 ***********
void SortByBubble(int *array,int len)
{
//如果有 len 个元素,需要循环排序的次数为 len-1 次
for (int i = 0; i < len-1; ++i)
{
//每次排序需要比较的元素个数: len - i - 1
for (int j = 0; j < len - i - 1; ++j)
{
//如果前面的数字大于后面的则进行交换
if (array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
//swap(array[j], array[j + 1]);//或者调用交换函数进行交换
}
}
}
}
void PrintArray(const int *array, int len)
{
for (int i = 0; i < len; ++i)
{
cout << array[i] << " ";
}
cout << endl;
}
int main()
{
int arr[] = { 9,-2,10,8,0,20,12,6,-8 };
int len = sizeof(arr) / sizeof(arr[0]);
SortByBubble(arr, len);
PrintArray(arr, len);
system("pause");
}
运行结果如下: