冒泡排序:
排序过程像是水中的气泡上升,越大的气泡升的越快,所以叫冒泡排序,从第一个数据开始,让前后相邻的数据进行比较,如果Ki>Ki+1则交换它们,每一趟排序完成一个数据,反复这个过程,直接待排序的数据为1,则结束排序。
和经典排序相比,冒泡排序对数据的有序性敏感,如果一趟排序没有发生交换,则说明所前面的数据都比它的后继数据要小,则可以立即停止,提前结束排序。
注意:如果待排序的数据基本有序,则使用冒泡排序速度最快,因为它数据的有序性敏感可以提前结束。
// 最优时间复杂度:O(N),最差时间复杂度:O(N^2),平均时间复杂度:O(N^2),空间复杂度:O(1),稳定性:稳定
void bubble_sort(int* arr,size_t len)
{
bool flag = true;
for(int i=len-1; flag&&i>0; i--)
{
flag = false;
for(int j=0; j<