【发布时间】:2017-08-28 17:49:07
【问题描述】:
如果我有 5 个数组和一个包含所有 5 个数组的指针数组,并且我需要编写一个函数,仅使用指针数组对每个数组进行排序,我该怎么做?
该函数需要从索引 1 (!) 而不是 0 开始对数组中的每一个进行排序。
int arr1[] = { 3, 9, 6, 7 };
int arr2[] = { 2, 5, 5 };
int arr3[] = { 0 };
int arr4[] = { 1, 6 };
int arr5[] = { 4, 5, 6, 2, 1 };
int * parr[] = { arr1, arr2, arr3, arr4, arr5 };
我知道如何对一个数组进行排序,但是当我尝试以最有效的方式使用指针数组对每个数组进行排序时,我有点迷失了。也许可以选择在一个循环中对每个数组进行排序?因为为每一个数组做一个完整的“for”循环似乎有点奇怪
注意每个数组的第一个元素表示每个数组的大小。例如:arr1[0] 中为 3,因此该数组中索引 0 之后的数字数量为 3 (9,6,7)。
【问题讨论】:
-
void multi_sort(size_t n, int *parr[n]){ for(size_t i = 0; i < n; ++i) single_sort(parr[i]); } -
您是否有人为限制只能“以最有效的方式”使用指针数组? IE。不允许创建其他变量?是否允许调用库函数?指向未排序数组 0 的指针可以被覆盖吗?你的经验水平如何? IE。使用循环的提议对您来说是一个新想法吗?简而言之,如果有任何不明显的要求,请说明。你能展示你对一个数组进行排序的代码吗? IE。 “你试过什么?”。
-
请edit您的问题显示what you have tried so far。您应该包含您遇到问题的代码的minimal reproducible example,然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask。
-
预期输出是多少?排序后,您是否希望
arr1包含{3, 6, 7, 9}?