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

  • 相关阅读:
    网络服务管理手册
    Oracle随机函数的取法
    oracle 分析函数over
    RMAN故障解决——RMAN用户手册
    SQL*PLUS命令的使用大全
    如何监测一个PLSQL过程的运行情况(三)
    oracle for in loop 两例
    自定义组件——按钮(转)
    新人报到安家!
    Delphi中生成控件的两种方法
  • 原文地址:https://www.cnblogs.com/wanglingdeboke/p/9484355.html
Copyright © 2011-2022 走看看