我在C中有一个简单的函数来获取数组是否已排序,但我似乎每次都得到不同的值。有时我会通过3次测试,有时我会通过2次测试,不确定问题是什么。
int is_sorted(int a[], int n)
{
for(int i = 0; i < n; i++)
{
if(a[i] > a[i + 1])
{
return 0;
}
}
return 1;
}
int main()
{
int a[] = {2, 4, 9, 8, 12};
int b[] = {-5, -2, 0, 8, 11, 15};
int aa[] = {2, 18, 12, 9, 1, 2, 8, 11, 16, 3};
int c[] = {4, 6, 8, 10};
npassed = 0;
if(!is_sorted(a, 5))
{
npassed++;
}
if(is_sorted(b, 6))
{
npassed++;
}
if(!is_sorted(aa, 10))
{
npassed++;
}
if(is_sorted(c, 5))
{
npassed++;
}
printf("number passed is_sorted : %i\n", npassed);
}
答案 0 :(得分:1)
你的函数接受两个参数:
a
:数组n
:数组大小检查它是否已排序您迭代所有元素并查看其下一个元素是否大于它自己。为此,您可以使用i
从零(最低可能索引)到n-1
(最高可能索引)。
但是,您始终要检查i
是否大于i+1
。如果你达到i
的最后一个可能索引会怎样?然后i+1
等于n
,因此在数组之外。你阵列之外的是随机数据。