对同一数组C

时间:2015-11-26 16:35:00

标签: c arrays qsort

我一直在玩一下,我已经完成了一个播放彩票的节目(EuroMillions),我能够做到。

我有四个阵列,两个用于数字,两个用于星星,然后我将它们排序,以便我可以更容易地比较它们。

所以这是我的问题,我可以分别排序前五个数字,然后是最后两个数字吗?或者我真的需要像我一样拥有四个阵列吗?

我以前用过的东西:

int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

qsort(b, 7, sizeof(int), cmpfunc);

如果需要代码我可以发布,但它相当大。

1 个答案:

答案 0 :(得分:3)

如果b是一个包含7个元素的int数组,则可以执行此操作

qsort(b, 5, sizeof(int), cmpfunc); // sort 5 elements starting from b 
qsort(b + 5, 2, sizeof(int), cmpfunc); // sort 2 elements starting from b+5

在每种情况下,前两个参数是指向内存块开头和元素数量的指针。

所以如果b定义为

int b[] = {8, 2, 12, 4, 5, 7, 6};

你会得到

{2, 4, 5, 8, 12, 6,7}