对于家庭作业,我必须编写一个函数,如果对作为参数传递的数组进行排序,则该函数将返回:
int ft_is_sorted(int *tab, int length, int (*f)(int, int))
{
//My code
}
我的问题是:“排序”是什么意思?
我的第一个直觉是说[10, 8, 3, 1]
和[1, 3, 8, 10]
都被排序了。但是,当我检查http://www.cplusplus.com/reference/algorithm/is_sorted/我看到这里,他们考虑数组排序,只有当它是上升的。
我不想就一般排序的含义展开任何辩论,但是如果排序在编程中有特殊含义,请告诉我!
对于C语言
传递给您的函数的函数指针旨在用作比较函数。
通常情况下,比较功能被设计成两个索引i
,并j
使得i<j
我们具备以下条件:f(tab[i], tab[j]) < 0
如果tab[i]
和tab[j]
是在顺序由比较函数定义。
例如f
,可以实现为:
int f(int a, int b) { return b-a; }
降序排列。并实现为:
int f(int a, int b) { return a-b; }
升序排列。
参考
所有语言
所有编程语言之间都没有关于如何定义比较函数的全局约定。
a
是少比b
的关系。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句