java - 对链表进行排序

标签 java data-structures linked-list

我在排序链接列表时遇到问题,任何人都可以帮助我并让我知道我做错了什么吗? 我需要对其进行排序并将其放入列表中。 如果您能给我一些指示,以使用新方法 public void print() 在末尾打印列表。

    public class SortedLinkedList<T extends Comparable<? super T>>
             extends LinkedList<T> 
    {
        private LinkedList<T> list;  //the sorted list

        //the constructor
        public SortedLinkedList(LinkedList<T> in)
        {
            if(in.isEmpty())
            {
                System.out.println("Empty list");
            }
            else
            {
                 LinkedList<T> first = new LinkedList<T>(in.subList(0, in.size()/2));
                 LinkedList<T> second = new LinkedList<T>(in.subList(in.size   ()/2,in.size()));
                 LinkedList<T> sortList = new LinkedList<T>();

                 int i = 0;
                 int j = 0;
                 while(i<first.size() && j<second.size())
                 {
                     if(first.get(i).equals(second.get(j)) || first.get(i).compareTo(second.get(j))<0)
                     {
                          sortList.add(first.get(i));
                          i++;
                     }
                     else
                     {
                          sortList.add(second.get(j));
                          j++;
                     }
                     if(i == first.size())
                     {
                          for(int k = j; k<second.size(); k++)
                          {
                              sortList.add(second.get(k));
                          }
                     }
                     else
                     {
                          for(int x = i; x<first.size(); x++)
                          {
                              sortList.add(first.get(x));
                     }
                }

            }
         }
     }
    }

最佳答案

在编写自己的排序之前尝试 Collections.sort 。如果您需要自己的排序顺序,请使用比较器。

一些补充:在大多数情况下,LinkedList 是错误的数据结构 - 特别是需要对其进行排序时。

关于java - 对链表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894860/

相关文章:

java - 转义 SPARQL 查询中的特殊字符

java - 尝试编译 AspectJ 教程应用程序时出现问题

performance - OCaml 中的恒定时间列表串联

c++ - 使用 libfm Linux 在 C 中自定义操作或命令?

Java,队列的迭代器错误。

java - java中通过数组索引数组

algorithm - 寻找最优解

algorithm - 如果第一个源节点出队后队列已经为空,广度优先搜索如何工作?

c# - 多键数据的数据结构?

c - 如何创建和访问二维链表元素