冒泡排序:
数据左右比较,把较大的数据交换到右边,往后重复以上操作,直到把最大的数据交换到最后,特点是该算法对数据的有序性敏感,如果在一次的排序过程中没有发生一次交换,那么就意味着数据已经有序,可以立即停止排序
适合待排序的数据基本有序时,则冒泡的效率非常高
时间复杂度:平均:O(N^2) 最优O:(N)
稳定的
代码:
void bubble_sort(TYPE* arr,size_t len)
{
printf("%s:\n",__func__);
show(arr,LEN);
bool flag = true;
for(int i=len-1; i>0 && flag; i--)
{
flag = false;
for(int j=0; j<i; j++)
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = true;
}
}
}
}