您的位置:首页 > 编程语言 > C语言/C++

【C语言】单链表的排序

2015-11-26 20:09 309 查看


void BubleSort(Plinklist *pplist)
{
assert(pplist );
Node *end= NULL ;
Node *begin = *pplist ;
while ((*pplist )->next != end)
{
while (begin->next!=end)
{
if (begin->data < begin->next->data)
{
int tmp = begin->data;
begin->data = begin->next->data;
begin->next->data = tmp;
}
begin = begin->next;
}
end = begin;
begin = * pplist;
}
}


[align=left]//选择排序[/align]
[align=left]思想:1.从第一个节点开始,找出表中最小的元素,然后把该最小元素与第一个节点的值换[/align]
[align=left] 2.从第二个节点开始,找出表中最小的元素,然后把该最小元素与第二个节点的值换[/align]

3.从第三个节点开始,找出表中最小的元素,然后把该最小元素与第三个节点的值换
[align=left] 4.以此类推...,直到开始节点为最后一个节点。[/align]
void SelectSort(Plinklist *pplist)
{
assert(pplist );
Plinklist begin = *pplist ;
Plinklist end = *pplist ;
while (begin->next != NULL )
{
Plinklist tmp = begin;
end = begin->next;
while (end)
{
if (tmp->data > end->data)
{
tmp = end;
}
end = end->next;
}
if (tmp!= begin)
{
int x = tmp->data;
tmp->data = begin->data;
begin->data = x;
}
begin = begin->next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: