zoukankan      html  css  js  c++  java
  • 利用插入排序对链表进行排序

    下图是对 4-15-9-1插入排序的举例

    当if(p.val<=p.next.val){
                    p=p.next;}  当不满足条件时 q=p.next  p.next=q.next 

    这时候,需要把q节点放到p节点之前的合适位置,即

    while(r.next.val<=q.val){
                        r=r.next;
                    }

    当条件满足时 r后移,当不满足时表示,找到比q节点大的数,那么需要把q节点放入r.next之前

    q.next=r.next;
       r.next=q;

    具体代码如下:

      public ListNode insertionSortList(ListNode head) {
            if(head == null || head.next== null){
                return head;
            }
            ListNode head1 = new ListNode(0);
            head1.next=head;
            ListNode p = head;
            ListNode q;
            ListNode r;
            while(p != null && p.next != null){
                if(p.val<=p.next.val){
                    p=p.next;
                }else{
                    q=p.next;
                    p.next=q.next;
                    r=head1;
                    while(r.next.val<=q.val){
                        r=r.next;
                    }
                    q.next=r.next;
                    r.next=q;
                }
            }
            
            return head1.next;
            
        }

  • 相关阅读:
    javascript和C#比较
    前端模块管理器简介
    javascript中的splice方法介绍&示例
    javascript中数组揭秘
    17款code review工具
    IIS ip访问限制插件
    iis 限制动态IP地址访问次数
    AWS云使用100条宝贵经验分享
    C# 开源框架(整理)
    如何获取Azure AD tenant的tenant Id?
  • 原文地址:https://www.cnblogs.com/wanglingdeboke/p/9484355.html
Copyright © 2011-2022 走看看