【发布时间】:2015-01-28 09:28:53
【问题描述】:
我的插入排序函数似乎没有将最后两个整数输入:15 和 8 插入到我的双向链表中。我的输出遗漏了 15 和 8。我在插入排序功能中做错了什么?我已经提供了我的函数的代码、输入和输出。谢谢。
这是我的插入排序函数:
public void insertionSort(int p)
{
Node n = new Node(p);
Node curr = head;
if(isEmpty())
{
head = n;
}
else
{
if(n.getProb() <= curr.getProb())
{
n.setNext(curr);
curr.setPrev(n);
head = n;
}
else if(n.getProb() > curr.getProb())
{
while(n.getProb() > curr.getProb() && curr.getNext() != null)
{
curr = curr.getNext();
}
if(n.getProb() < curr.getProb())
{
n.setNext(curr);
n.setPrev(curr.getPrev());
curr.setPrev(n);
}
else if(n.getProb() >= curr.getProb())
{
n.setNext(curr.getNext());
n.setPrev(curr);
curr.setNext(n);
}
}
}
size++;
}
这是我的打印功能
public void printSortedList()
{
Node curr = head;
while(curr != null)
{
System.out.println(curr.getProb());
curr = curr.getNext();
}
}
这是我在 main 函数中的输入方式:
public static void main(String [] args)
{
List list = new List();
list.insertionSort(10);
list.insertionSort(5);
list.insertionSort(5);
list.insertionSort(60);
list.insertionSort(5);
list.insertionSort(10);
list.insertionSort(15);
list.insertionSort(8);
list.printSortedList();
}
这是我的输出:
5
5
5
10
10
60
【问题讨论】:
-
最简单的失败示例是什么?你可以添加一个单元测试来证明这一点吗?当您在调试器中单步执行代码时会看到什么?
-
@PeterLawrey 我将输入更改为仅 3 个整数
list.insertionSort(3);list.insertionSort(100);list.insertionSort(5);我得到的输出是:3100所以我的函数似乎遗漏了 5 in这个案例。
标签: java doubly-linked-list insertion-sort