Insertion Sort List

对链表进行插入排序,比对数组排序麻烦一点。

ListNode *insertSortList(ListNode *head)
      {
          ListNode dummy(-1);
          for (ListNode *cur = head; cur != nullptr;)
          {
              //将当前结点插入到此结点之后
              auto Pos = findPos(&dummy, cur->val);
              //保存当前结点的下一个结点
              ListNode *temp = cur->next;
              //插入
              cur->next = Pos->next;
              Pos->next = cur;
              //继续下一个结点
              cur = temp;
          }
      }

      ListNode *findPos(ListNode *head, int val)
      {
          ListNode *pre = nullptr;
          for (ListNode *cur = head; cur != nullptr&&cur->val <= val; pre = cur, cur = cur->next);

          return pre;
      }
View Code

 

posted @ 2016-07-12 16:27  牧马人夏峥  阅读(116)  评论(0编辑  收藏  举报