C 按2个字段插入结构的排序数组
我正在制作一款uno纸牌游戏,游戏结构为带字段的纸牌:C 按2个字段插入结构的排序数组,c,sorting,insertion-sort,C,Sorting,Insertion Sort,我正在制作一款uno纸牌游戏,游戏结构为带字段的纸牌: struct card { int rank char *color char *action. } 我可以通过插入按颜色排序。我想知道如何先按颜色对uno卡数组进行排序,然后对每种颜色的秩进行排序。假设该结构称为card,c1和c2是指向该结构对象的两个指针 在这种情况下,您应该使用以下条件来比较数组的元素 int comparison( card *c1, card *c2 ) { int co
struct card
{
int rank
char *color
char *action.
}
我可以通过插入按颜色排序。我想知道如何先按颜色对uno卡数组进行排序,然后对每种颜色的秩进行排序。假设该结构称为card,c1和c2是指向该结构对象的两个指针 在这种情况下,您应该使用以下条件来比较数组的元素
int comparison( card *c1, card *c2 )
{
int color_cmp = strcmp( c1->color, c2->color );
return color_cmp < 0 || ( color_cmp == 0 && c1->rank < c2->rank );
}
假设由于Bo Persoson,您正在重载
操作符,这就是我问题的解决方案
void sort(card *a, int length) {
int j;
for (int i = 1; i < length; i++) {
j = i;
while (j > 0 && a[j].color < a[j - 1].color || (a[j].color == a[j - 1].color && a[j].rank < a[j - 1].rank)) {
swap(&a[j], &a[j - 1]);
j--;
}
}
void排序(卡片*a,整数长度){
int j;
for(int i=1;i0&&a[j].color
}您能分享到目前为止的代码吗?如果你有一个条件color1
,你可以把它改成color1
^这就是解决办法。谢谢你,波·佩索森,这就是答案。
int colorCompareResult = strcmp(card1.color, card2.color);
if (colorCompareResult < 0)
return true;
else if (colorCompareResult == 0 && card1.rank < card2.rank)
return true;
else
return false;
void sort(card *a, int length) {
int j;
for (int i = 1; i < length; i++) {
j = i;
while (j > 0 && a[j].color < a[j - 1].color || (a[j].color == a[j - 1].color && a[j].rank < a[j - 1].rank)) {
swap(&a[j], &a[j - 1]);
j--;
}
}