【C语言】单链表的排序

【C语言】单链表的排序_第1张图片

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;
          }
}

//选择排序
思想:1.从第一个节点开始,找出表中最小的元素,然后把该最小元素与第一个节点的值换
           2.从第二个节点开始, 找出表中最小的元素,然后把该最小元素与第二个节点的值换
           3.从第三个节点开始, 找出表中最小的元素,然后把该最小元素与第三个节点的值换
           4.以此类推...,直到开始节点为最后一个节点。
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;
          }
}


你可能感兴趣的:(C语言)