void BubbleSort(int arr[], int len)
{
int i, j, temp;
for (i = 0; i < len; i++)
{
for (j = len - 1; j >= i; j--)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
优化:
设置标志位flag,如果发生了交换flag设置为true(1);如果没有交换就设置为false(0)。
这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。
void BubbleSort(int arr[], int len)
{
int i, j, temp, flag = 1;
for (i = 0; i < len && flag; i++)
{
flag = 0;
for (j = len - 1; j >= i; j--)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 1;
}
}
}
}
时间复杂度: