链接类:
class Link
{
public int data;
public Link next;
public Link previous;
public int count;
public Link(int x, int y)
{
data=x;
count = y;
}
public void displayLink()
{
System.out.print(data+" ");
}
}
DoublyLinkList类(在quicksort类中有一些错误,或者可以在不使用索引的情况下更改快速排序方法):
class DoublyLinkList
{
private Link first;
private Link last;
public DoublyLinkList()
{
first=null;
last=null;
}
public void insert(int x,int y)
{
Link newLink=new Link(x,y);
newLink.next=null;
if(isEmpty())
{
first=newLink;
}
else
{
last.next=newLink;
newLink.previous=last;
}
last=newLink;
}
public boolean isEmpty()
{
return(first==null);
}
public void displayList()
{
Link current=first;
while(current!=null)
{
current.displayLink();
current=current.next;
}
}
public void quicksort()
{
Link pivot = first;
Link too_big_index = first.next;
int temp;
Link too_small_index = last;
while (too_big_index.data <= pivot.data)
too_big_index =too_big_index.next;
while (too_small_index.data > pivot.data)
too_small_index=too_small_index.previous;
if(too_big_index.count < too_small_index.count)
{
temp = too_big_index.data;
too_big_index.data =too_small_index.data;
too_small_index.data=temp;
// swap data[too_big_index] and data[too_small_index]
}
while (too_small_index.count > too_big_index.count)
{
quicksort();
}
temp = too_small_index.data;
too_small_index.data =pivot.data;
pivot.data=temp;
}
}
主类(第一种显示方法显示数字,但另一种方法不起作用。不知道为什么。我认为快速排序课程不起作用,需要帮助来改进它。)
public class Test
{
public static void main(String args[])
{
DoublyLinkList d = new DoublyLinkList();
d.insert(34,0);
d.insert(75,1);
d.insert(86,2);
d.insert(39,3);
d.insert(10,4);
d.insert(61,5);
d.insert(22,6);
d.insert(3,7);
d.insert(1,8);
d.insert(125,9);
d.insert(162,10);
d.displayList();
d.quicksort();
d.displayList();
}
}