【问题标题】:sort struct not working排序结构不起作用
【发布时间】:2014-04-07 09:07:33
【问题描述】:

您好,我正在尝试对结构进行排序,但由于某种原因它不起作用,所以如果您能帮我解决问题,我会很高兴。谢谢。

(N = 6)

我的排序-

for(i = 0; i < N-1; i++) 
{  
    for(j = i + 1; j < N; j++)
    {    
        if(basketball[i].points_number > basketball[i].points_number) 
        {     
            temp = basketball[i].points_number; 
            basketball[i] = basketball[j];   
            basketball[j].points_number = temp;   
        }
    }
}

我的结构 -

struct player
{
    char name[20]; 
    float height;
    float points_number; 
    int vest_number; 
};

【问题讨论】:

    标签: c sorting struct


    【解决方案1】:

    你有

    basketball[i] = basketball[i];
    

    即,正在用自身覆盖相同的条目。我想,应该是这样的

    basketball[i] = basketball[j];  // Note the "j" on the right-hand side of the assignment
    

    【讨论】:

      【解决方案2】:

      首先,你有

      if(basketball[i].points_number > basketball[i].points_number)
      

      你想要的地方(注意j

      if(basketball[j].points_number > basketball[i].points_number)
      

      然后,您必须交换整个结构,而不仅仅是 points_numberstructure,这样您就拥有了

      struct player temp = basketball[i]; 
      basketball[i] = basketball[j];   
      basketball[j] = temp;  
      

      【讨论】:

        【解决方案3】:

        请检查这一行:

        if(basketball[i].points_number > basketball[i].points_number) 
        

        在这里,您正在比较相同的值,因为在篮球[i] 中检查了两个 ith 元素。应该是:

        if(basketball[i].points_number > basketball[j].points_number) 
        

        【讨论】:

          【解决方案4】:

          你需要交换玩家的结构,但你只保存在 temp 变量中的点。应该是

                  struct player temp;
                  temp = basketball[i]; 
                  basketball[i] = basketball[j];   
                  basketball[j] = temp;   
          

          【讨论】:

            【解决方案5】:
            for(i = 0; i < N-1; i++) 
            {  
                for(j = i + 1; j < N; j++)
                {    
                    if(basketball[i].points_number > basketball[j].points_number) 
                    {     
                        temp = basketball[i]; 
                        basketball[i] = basketball[j];   
                        basketball[j] = temp;   
                    }
                }
            }
            

            【讨论】:

              猜你喜欢
              • 2021-03-21
              • 2019-12-20
              • 2020-08-29
              • 2020-07-26
              • 1970-01-01
              • 1970-01-01
              • 2021-07-28
              • 2014-08-01
              • 1970-01-01
              相关资源
              最近更新 更多