Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链表实现排序方法_Java_Sorting - Fatal编程技术网

Java 链表实现排序方法

Java 链表实现排序方法,java,sorting,Java,Sorting,我制作的链表不是来自java集合,我在其中加入了许多方法。。我的链表和原来的一样,但有一点不同我的班级有一个打印和排序方法我的输入是:[5,18,3,10,2]。。。也可以是字符串输入。。我希望使用sort方法对链表进行排序,因此输出应该如下:[2,3,5,10,18]或排序字符串 以下是排序方法代码: public void sort(){ Node<E> current = head ; Node<E> current2

我制作的链表不是来自java集合,我在其中加入了许多方法。。我的链表和原来的一样,但有一点不同我的班级有一个打印和排序方法我的输入是:[5,18,3,10,2]。。。也可以是字符串输入。。我希望使用sort方法对链表进行排序,因此输出应该如下:[2,3,5,10,18]或排序字符串 以下是排序方法代码:

        public void sort(){
        Node<E> current = head ;
        Node<E> current2 = current.next;
        E min = head.element;
        E temp;
        int pos = 0;
        for (int i = 0; i < size-1; i++) { 
            for (int j = 0; j < size; j++) {
                if(current2 != null){
                    if(min.compareTo(current2.element) > 0){
                      pos = j ;
                      min = current2.element;

                    }
                    current2= current2.next;
                }
            }

            temp = current.element;
            current.element = min;
            current = current.next;
            min = current.element;
            current2 = head;
            for (int j = 0; j <= pos; j++) {
                if(current2 !=null){
                if(j==pos){current2.element = temp;}
                current2= current2.next;
                } 
            }
            current2 = current.next;   
    }
}

尝试使用这种排序方法

public void sort()
  {
    for (int i = size - 1; i >= 1; i--)
    {
      Node<E> finalNode = head;
      Node<E> tempNode = head;

      for (int j = 0; j < i; j++)
      {
        E val1 = head.element;
        Node<E> nextnode = head.next;
        E val2 = nextnode.element;
        if (val1.compareTo(val2))
        {
          if (head.next.next != null)
          {
            Node<E> CurrentNext = head.next.next;
            nextnode.next = head;
            nextnode.next.next = CurrentNext;
            if (j == 0)
            {
              finalNode = nextnode;
            }
            else
              head = nextnode;

            for (int l = 1; l < j; l++)
            {
              tempNode = tempNode.next;
            }

            if (j != 0)
            {
              tempNode.next = nextnode;

              head = tempNode;
            }
          }
          else if (head.next.next == null)
          {
            nextnode.next = head;
            nextnode.next.next = null;
            for (int l = 1; l < j; l++)
            {
              tempNode = tempNode.next;
            }
            tempNode.next = nextnode;
            nextnode = tempNode;
            head = tempNode;
          }
        }
        else
          head = tempNode;
        head = finalNode;
        tempNode = head;
        for (int k = 0; k <= j && j < i - 1; k++)
        {
          head = head.next;
        }

      }
    }
  }

我很努力,但没有成功什么不成功?有什么错误吗?如果是,请在此处张贴完整的stacktrace。另外,最好有一个最简单的完整示例来演示这个问题。@反斜杠Ok,我编辑了一个完整的示例仍然缺少。添加一个包含示例数据的完整程序,该示例数据演示issue@BackSlash这是完整的代码:@AbdulRahman我们不是在要求完整的代码。我们要求举个例子。你的意见是什么?你的预期产出是多少?你观察到的输出是什么?粘贴的代码将不会编译,因为您在LinkedList上调用了print,但LinkedList没有方法print。