我试图在一个循环中比较不同的排序算法。我在一个字符串数组中有#defined函数调用,但它没有按预期调用函数。问题是什么?
函数调用数组:
const char sorts[][30] = {"bubbleSort(arr, size)", "quickSort(arr, 0, size-1)", "insertionSort(arr, size)",
"selectionSort(arr, size)", "mergeSort(arr, 0, size)"};
使用数组调用函数:
for(int i = 0; i < NUMBER_OF_SORTS; ++i) {
sorts[i];
}
我相信有一个可行的方法,提前感谢帮助。
2条答案
按热度按时间jxct1oxe1#
首先,声明一个类型来表示排序函数(假设排序函数接受整数数组):
然后,定义一个指向排序函数的指针数组(在这里,C语言的匈牙利语表示法只建议使用snake case bubble_sort,而对于
C++
,则建议使用camel case bubbleSort,正如您所做的那样):并称之为:
在这种情况下取
i
从0到4。编辑:如果某个排序函数需要额外的参数,例如
quickSort
,那么您不直接调用quickSort
,而是定义一个 Package 函数quick_sort_wrapper
,它将具有 SORTING_FUNCTION 签名,并且此函数将调用quickSort
,并向其传递除array
和size
之外的额外参数。xlpyo6sf2#
对于初学者来说,这可能是最好的方法,为自己提供了从编译器获得帮助的最佳机会。