我已经编写了对某个给定数组进行冒泡排序的函数,并在数组已经排序后停止执行。
int sort(int *arr, int size) {
int i, j, temp, st = 1, count = 0;
for(i = 0; (i < size - 1) && (st == 1); i++)
{
st = 0;
for(j = 0; j < size - 1; j++)
{
if(arr[j] < arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
st = 1;
}
count++;
}
}
return count;
}
如您所见,当数组在 size^2 移动之前排序时,循环应该被打破。
但是,出了点问题,count 变量始终是 size * size,无论我传递什么数组,即使 {1, 2, 3, 4, 5} 给出相同的结果。
怎么了?