临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。时间复杂度O(n^2)
int bubble_sort(int arr[], int lenght)
{
int flag = 1;//标记一次遍历没有发生移位,排序完毕
if (arr == NULL || lenght == 0)
{
return;
}
for (int i = lenght - 1; i >= 1 && flag; --i)
{
flag = 0;
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;
if (flag == 0)
{
flag = 1;
}
}
}
}
}