我在双链表中有一堆数据,我需要对此链表中的数值数据进行冒泡排序
这是我过去一直在使用的:
public void bubbleSort(int a[], int n)
{
for (int i = 0; i < n-1; i++)
{
for (int j = 0; j < n-1-i; j++)
{
if (a[j + 1] < a[j])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
但是我不知道如何使用链接列表,任何帮助?
============================================
所以我尝试了这种方法:
public StudentNode get(int i) {
if (!isEmpty()) {
int j = 0;
StudentNode element1 = header;
while (j++ < i) {
element1 = element1.getNext();
if (element1 == null)
return null;
}
return element1;
}
return null;
}
public void bubbleSort()
{
for (int i = 0; i < size - 1; i++) {
boolean changed = false;
for (int j = 0; j < size - i - 1; j++) {
if (get(j + 1) != null) {
if (get(j).toBeSortedNumber() > get(j + 1).toBeSortedNumber()) {
System.out.println("Swapping: " + get(j).toBeSortedNumber() + " : " + get(j + 1).toBeSortedNumber());
swap(get(j), get(j + 1));
changed = true;
}
}
}
if (!changed)
return;
}
}
public void swap(StudentNode first, StudentNode second) {
StudentNode firstPrev = first.goBack();
StudentNode firstNext = first.getNext();
StudentNode secondPrev = second.goBack();
StudentNode secondNext = second.getNext();
firstPrev.setNext(second);
firstNext.setBack(second);
secondPrev.setNext(first);
secondNext.setBack(first);
second.setBack(firstPrev);
second.setNext(firstNext);
first.setBack(secondPrev);
first.setNext(secondNext);
}
butit甚至没有进入System.out.println
部分,我无法解决它的错误。还有帮助吗?
答案 0 :(得分:1)
由于这是家庭作业,我将限制我的回答一些提示: