Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将结构的成员与冒泡排序保持在一起?_C_Sorting_Bubble Sort - Fatal编程技术网

C 如何将结构的成员与冒泡排序保持在一起?

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

我已经在一个.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(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