对同一数组的两个不同部分进行排序 C
Sorting two different parts of the same array C
我一直在玩,我已经完成了一个玩彩票的程序 (EuroMillions),我能够做到。
我有四个数组,两个用于数字,两个用于星星,然后我对两者进行排序,以便更轻松地比较它们。
所以这是我的问题,我可以只对前五个数字排序,然后对最后两个数字分别排序吗?或者我真的需要像我一样拥有四个数组吗?
我用来排序的:
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
和
qsort(b, 7, sizeof(int), cmpfunc);
如果需要代码,我可以post,但是它相当大。
如果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
在每种情况下,前 2 个参数是指向内存块开始的指针和元素数。
所以如果b
定义为
int b[] = {8, 2, 12, 4, 5, 7, 6};
你会得到
{2, 4, 5, 8, 12, 6,7}
我一直在玩,我已经完成了一个玩彩票的程序 (EuroMillions),我能够做到。
我有四个数组,两个用于数字,两个用于星星,然后我对两者进行排序,以便更轻松地比较它们。
所以这是我的问题,我可以只对前五个数字排序,然后对最后两个数字分别排序吗?或者我真的需要像我一样拥有四个数组吗?
我用来排序的:
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
和
qsort(b, 7, sizeof(int), cmpfunc);
如果需要代码,我可以post,但是它相当大。
如果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
在每种情况下,前 2 个参数是指向内存块开始的指针和元素数。
所以如果b
定义为
int b[] = {8, 2, 12, 4, 5, 7, 6};
你会得到
{2, 4, 5, 8, 12, 6,7}