C - 使用带有无序数组的链表进行插入排序

时间:2013-02-14 08:08:46

标签: c linked-list insertion-sort unordered

void insert(struct EMP* emp[])
{
    struct EMP* previous = NULL;
    struct EMP* current = top;

    int i;
    int j;

    previous = current;
    current = current -> next;

    for(i = 1; i < numEmps; i++)
    {
        j = i;
        while(j > 0 && previous -> id > current -> id)
        {
            previous = current;
            j--;
        }

        current = current -> next;
    }
}

所以,参数是一个无序数组,我想用插入排序来命令它。我遇到问题的是它需要链接列表。有什么建议?以上是我现有的插入排序函数,它不起作用。

1 个答案:

答案 0 :(得分:0)

我认为您需要更仔细地查看插入排序算法。实质上,它需要一个新的目标列表来添加元素(特别是在构建第二个列表时将元素插入到正确的位置)。因此,您误解的核心是这可以在一个列表中“就地”完成。

将第二个列表实现为链接列表会更安全,更容易,因为您需要能够在任意点有效地将元素插入到列表中。