首页 > 其他分享 >链表冒泡排序

链表冒泡排序

时间:2022-08-23 22:55:54浏览次数:54  
标签:p2 head ListNode 冒泡排序 next 链表

public ListNode sortList(ListNode head) {
        ListNode headpre=new ListNode();
        headpre.next=head;
        int length=0;
        while(head!=null){
            head=head.next;
            length++;
        }

        //冒泡
        for(int i=1;i<length;i++){
            int j=0;
            ListNode p0=headpre;
            ListNode p1=p0.next;
            ListNode p2=p1.next;
            while(p2!=null){
                reverse(p0,p1,p2);
                if(j==0){
                    headpre.next=p0.next;
                }
                j++;
                p0=p0.next;
                p1=p0.next;
                p2=p1.next;
            }
        }

        return headpre.next;
        
    }

    //三指针排序
    public void reverse(ListNode p0,ListNode p1,ListNode p2){
        if(p1.val>p2.val){
            p0.next=p2;
            p1.next=p2.next;
            p2.next=p1;
        }
    }

标签:p2,head,ListNode,冒泡排序,next,链表
From: https://www.cnblogs.com/sjj123/p/16618148.html

相关文章

  • 算法:两个链表的第一个公共节点
    问题输入两个链表,找出它们的第一个公共节点。解决//1、暴力解法classSolution{ListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){w......
  • 「数据结构与算法」链表 —— 看这一篇就够了(超详细)
     一、链表简介链表是一种物理存储单元上非连续、非顺序的存储结构,数据结构的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点......
  • leetcode160:相交链表
    /***题目:*给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。*如果两个链表不存在相交节点,返回null。*注意......
  • 数据结构2-链表
    前言前面讲了数据结构中最常用、最基础的数组,接下来说一说数据结构中另一个比较基础比较常用的数据结构——链表,相比于数组来说,链表更为复杂一点,在理解和实现上都比较困难......
  • 删除链表结点类问题
    删除链表结点NO1.删除链表倒数第k个结点给定一个链表,删除链表的倒数第n个节点并返回链表的头指针。要求:空间复杂度\(O(1)\),时间复杂度\(O(n)\)如果倒数第k个......
  • 链表应用题
    1.递归删除指定值(无头结点)voidDel(ListNode*L,intval){ListNode*p;//指向被删除节点if(L==NULL)return;//递归边界if(L->val==val){//处理首指针......
  • go语言 单向链表
    //示例45packagemainimport"fmt"funcmain(){varintlinkLinkfori:=0;i<10;i++{intlink.InsertTail(i)}......
  • c语言中使用冒泡排序法对数组进行排序
     001、#include<stdio.h>#defineNUMBER5voidpsort(intx[],intn){inti,j;for(i=0;i<n-1;i++)......
  • 链表反转类算法题
    反转链表类NO1.反转链表给定一个长度为n的链表,反转该链表,输出表头。方法一:迭代法(推荐使用)算法流程:step1:特殊情况判断,空链表或只有一个结点的链表,直接返回头......
  • 2.JZ24 反转链表
    C++1#include"stdafx.h"2#include<stdlib.h>3structNode{4intdata;5Node*next;6};78voidprint1(Node*head)9{10Node......