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

  • 相关阅读:
    String&StringBuffer&StringBuilder区别
    linux启动流程简介
    nginx视频直播/点播服务干货分享
    Http协议的认识
    php中对象是引用类型吗?
    nginx与php-fpm 504 Gateway Time-out 排查与解决案例
    php header函数常见用途
    php魔术方法
    ajax 和jsonp 不是一码事 细读详解
    php session redis 配置
  • 原文地址:https://www.cnblogs.com/wanglingdeboke/p/9484355.html
Copyright © 2011-2022 走看看