【C语言】单链表的排序

来源:互联网 发布:做大数据的上市公司 编辑:程序博客网 时间:2024/05/17 03:15

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


0 0
原创粉丝点击