如何按值对ListNode(链接的)排序?

时间:2019-03-23 07:31:46

标签: algorithm linked-list

如何在不使用任何库的情况下按值对节点列表进行排序。

示例:  *输入:3-> 1-> 5-> 4-> 2  *输出:1-> 2-> 3-> 4-> 5

ListNode.java

import java.util.List;

public class ListNode {
    public int val;
    public ListNode next;

    public ListNode(int x) {
        val = x;
    }

    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

SortLinkList.java

public class SortLinkList {

    public static ListNode sortLinkList(ListNode list) {
        //TODO:
        return list;
    }

}```

2 个答案:

答案 0 :(得分:1)

如果要就地排序,则可以实施气泡排序:

伪代码:

bool notDone = true
while(notDone)
{
    notDone = false;
    cur = head;

    while(cur.nxt != null)
    {
        prev = cur;
        cur = cur.nxt;

        if(cur.val > cur.nxt.val)
        {
            prev.nxt = cur.nxt;
            temp = cur.nxt.nxt;
            cur.nxt.nxt = cur;
            cur.nxt = temp;
            notDone = true;
        }
    }
}

答案 1 :(得分:0)

1。制作一个仅存储每个节点的类的数组,对于每个节点,next指向null。数组的长度是列表中没有节点的值。

2。排列数组 3.链接节点并返回头

PS:为什么在涉及排序操作时使用链表,而不是单独使用数组?