C 如何将结构的成员与冒泡排序保持在一起?
我已经在一个.csv文件中创建了一个名称列表,并尝试按字母顺序对它们进行排序。现在我有一个结构数组。该结构只有两个成员,即名字和姓氏。我的冒泡排序是根据我想要的名字来排序的,但是我怎么能把姓氏保留在一起呢?当我将数组打印出来时,姓氏与名字不对齐C 如何将结构的成员与冒泡排序保持在一起?,c,sorting,bubble-sort,C,Sorting,Bubble Sort,我已经在一个.csv文件中创建了一个名称列表,并尝试按字母顺序对它们进行排序。现在我有一个结构数组。该结构只有两个成员,即名字和姓氏。我的冒泡排序是根据我想要的名字来排序的,但是我怎么能把姓氏保留在一起呢?当我将数组打印出来时,姓氏与名字不对齐 void bubbleSort(cred name[], int n) { char temp[25]; int i,j; for(i=1;i<=n;i++) for(j=0;j<=n-i;j++) if
void bubbleSort(cred name[], int n) {
char temp[25];
int i,j;
for(i=1;i<=n;i++)
for(j=0;j<=n-i;j++)
if(strcmp(name[j].first,name[j+1].first)>0)
{
strcpy(temp,name[j].first);
strcpy(name[j].first,name[j+1].first);
strcpy(name[j+1].first,temp);
}
printf("The strings appears after sorting :\n");
for(i=0;i<=n;i++)
printf("%s %s\n",name[i].first,name[i].last);
}
void bubbleSort(cred name[],int n){
煤焦温度[25];
int i,j;
对于(i=1;i我认为你的逻辑似乎合理,有人可以随意纠正我,但你也应该在交换名字时交换你的姓氏
你也可以创建一个cred类型的temp,将数组中的前一个元素与下一个元素交换,两者都是cred类型。我认为你的逻辑看起来很合理,有人可以随意纠正我,但你也应该在交换名字时交换你的姓氏
您也可以创建一个cred类型的temp,将数组的上一个元素与下一个元素交换,两个类型都是cred。只需替换即可
strcpy(temp,name[j].first);
strcpy(name[j].first,name[j+1].first);
strcpy(name[j+1].first,temp);
与
由于结构可以相互分配,因此无需逐个成员复制
还请注意,所有的for
循环使用只需替换
strcpy(temp,name[j].first);
strcpy(name[j].first,name[j+1].first);
strcpy(name[j+1].first,temp);
与
由于结构可以相互分配,因此无需逐个成员复制
还要注意,所有的for
循环都使用如何定义结构?typedef struct{char first[fixedN],last[fixedM];}cred;
?或使用指针?…如果它们是固定的,您可以直接交换整个结构…否则,您可以只交换指针而不复制字符串。OT:小心使用Uugh…..不要交换名称--按您想要的顺序对数组排序。结构的目的是协调其他结构的各个部分ise无关信息。只需if(strcmp(name[j]。first,name[j+1]。first)>0{cred tmp=name[j];name[j]=name[j+1];name[j+1]=tmp;}
该结构是如何定义的?typedef struct{char first[fixedN],last[fixedM];}cred;
?或使用指针?…如果它们是固定的,您可以直接交换整个结构…否则,您可以只交换指针而不复制字符串。OT:小心使用Uugh…..不要交换名称--按您想要的顺序对数组排序。结构的目的是协调其他结构的各个部分ise不相关的信息。只要if(strcmp(name[j].first,name[j+1].first)>0{cred tmp=name[j];name[j]=name[j+1];name[j+1]=tmp;}
作为将来的参考,为新程序员提供一个示例通常是很有帮助的(尤其是那些以视觉为导向,阅读理解困难的人,如语言障碍等)回答得很好。好主意。我对回应还不熟悉,所以我很感激你的反馈。当然,我能给你的最好建议就是记住,当你回应时,你要扮演老师的角色。想想,如果角色颠倒了,你想向你解释什么,以便充分理解你所做的事情是错误的,并且是错误的你需要做什么来解决这个问题。对于给予多少或给予多少,没有硬性的方法,只要用你的最佳判断来判断提问者的学习情况(基于问题),并帮助他对解决方案有一个坚定的理解。(你已经得到了我的投票,所以我无能为力。:)
为将来的参考,为新程序员提供一个可以遵循的示例通常是很有帮助的(尤其是那些以视觉为导向,阅读理解困难的程序员,例如语言障碍等)回答得很好。好主意。我对回应还不熟悉,所以我很感激你的反馈。当然,我能给你的最好建议就是记住,当你回应时,你要扮演老师的角色。想想,如果角色颠倒了,你想向你解释什么,以便充分理解你所做的事情是错误的,并且是错误的你需要做什么来解决这个问题。对于给予多少或给予多少,没有硬性的方法,只要用你的最佳判断来判断提问者的学习情况(基于问题),并帮助他对解决方案有一个坚定的理解。(你已经得到了我的投票,所以我无能为力。:)
由于某种原因,当使用此算法或任何类似算法时,它会错过0索引的“第一”成员。由于某种原因,当使用此算法或任何类似算法时,它会错过0索引的“第一”成员
for(i=1;i<=n;i++)
^^
here