我一直在玩一下,我已经完成了一个播放彩票的节目(EuroMillions),我能够做到。
我有四个阵列,两个用于数字,两个用于星星,然后我将它们排序,以便我可以更容易地比较它们。
所以这是我的问题,我可以分别排序前五个数字,然后是最后两个数字吗?或者我真的需要像我一样拥有四个阵列吗?
我以前用过的东西:
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
和
qsort(b, 7, sizeof(int), cmpfunc);
如果需要代码我可以发布,但它相当大。
答案 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}