• [LeetCode] Insertion Sort List


    Sort a linked list using insertion sort.

    对于指针链表类题,分析时一定要用笔先清晰画出来,每个指针对应那些结点。

    对比:

    (1)插入排序的顺序表实现,是对temp从参考点temp往前与一个个元素比较,

    (2)插入排序的链表实现,是对temp从头结点开始往后与一个个元素比较。(因为链表只有next域,如果像顺序表一样往前比较代码会比较麻烦)

    插入排序用顺序表实现如下所示:

    void InsertSort(int a[],int n)
    {
       int i,j;
       int temp;
       for(i=0;i<n-1;i++)
       {
          temp = a[i+1];
          j = i;
          while(j>-1 && temp <a[j])
          {
             a[j+1]=a[j];
             j--;
          }
          a[j+1] = temp;
       }
    }

    插入排序用链表实现如下所示:

      struct ListNode {
          int val;
          ListNode *next;
          ListNode(int x) : val(x), next(NULL) {}
      };
    
    
    class Solution 
    {
    public:
        ListNode *insertionSortList(ListNode *head) 
        {
            if(head == NULL)
                return NULL;
            ListNode *pi ,*temp = head->next; //temp是参考点,即要插入的值的结点。
            ListNode *forehead = new ListNode(0);
            forehead->next = head;
                
            
    
            while(temp != NULL)
            {
                ListNode *pi0 = forehead;
                pi = forehead->next;    //不能写pi = head,因为head还是原先的head,这里的head有可能已经变了
                while(pi != temp && pi->val < temp->val)
               {
                 pi0 = pi;
                 pi = pi->next;
               }
               
               ListNode *temp1 = temp;
               temp = temp->next;
    
               if(pi != temp1)    //此时temp1是参考点,把它插入该插入的位置
              {
                  pi0->next = temp1;
                  temp1->next = pi;
                  while(pi->next  != temp1) 
                       pi = pi->next;
                  pi->next = temp;
              }
                   
            }
            return forehead->next;
        }
    };
  • 相关阅读:
    linux安装jenkins
    linux安装python3.8
    python类继承多态
    python字典排序
    第一篇
    第十一周编程总结
    2019春第十周作业
    2019年寒假作业1
    2019年寒假作业3
    学期总结
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3777542.html
Copyright © 2020-2023  润新知