如何使用C中的结构数组实现插入排序?

时间:2016-06-02 15:44:07

标签: c arrays sorting struct

我正在尝试对一系列结构进行排序,但我不知道我做错了什么......

这是我的结构:

typedef struct{
    char name[15];
    char score[15];
}scores;

这是我的档案:

Eric 2500
John 4000
Chris 2000
Karen 1000
Lizzie 3000

我读了这个文件所以现在我的结构有了名字和得分值但是当我尝试用我的同学给我的插入排序算法对它进行排序时:

void InsertionSort(scores records[RP])
{
    int pos, i;
    scores structInsert;

    for(i=1; i<=RP; i++)
    {
        strcpy(structInsert.name, records[i].name);
        strcpy(structInsert.score, records[i].score);

        pos=i;

        while(pos>0 && records[pos-1].score > structInsertar.score)
        {
            strcpy(structInsert.name, records[i].name);
            strcpy(structInsert.score, records[i].score);
            pos--;
        }

        if(pos!=i)
        {
            strcpy(records[pos].name, structInsert.name);
            strcpy(records[pos].score, structInsert.score);
        }
    }
}

并且“sort”之后的输出是:

?2-s //Trash, Eric is gone
John 4000
Chris 2000
Karen 1000
Lizzie 3000

没有任何分类,请帮忙! BTW,得分是一个char,因为它是outtextxy()的游戏。

1 个答案:

答案 0 :(得分:0)

通过读取数组的超出范围,您似乎正在导致未定义的行为

尝试将i<=RP更改为i<RP,以避免off-by-one error