我已经写了一个阵列列表的快速排序,因为它的逻辑似乎是健全的。我遇到的问题是交换元素。似乎发生的事情不是交换元素,而是将现有元素替换为要交换的元素。一个示例运行从一个像[开心,苹果,吃,食物]这样的列表开始,在排序运行后,它会出现[快乐,开心,快乐,食物]。我相信我的错误很简单,但我一直在盯着它太久,需要新鲜的眼睛。这是我的代码到目前为止。提前致谢!快速排序使用arraylist java
String pivot = list.get(0); // Choose the first element as the pivot
int low = first + 1; // Index for forward search
int high = last; // Index for backward search
while (high > low)
{ // Search forward from left
while (low <= high && list.get(low).compareTo(pivot) <= 0)
{
low++;
}
// Search backward from right
while (low <= high && list.get(high).compareTo(pivot) > 0)
{
high--;
}
// Swap two elements in the list
if (high > low)
{
String temp = list.get(high);
list.set(high,list.get(low));
list.set(low,temp);
}
}
while (high > first && list.get(high).compareTo(pivot) <= 0)
{
high--;
}
// Swap pivot with list[high]
if (list.get(high).compareTo(pivot) < 0)
{
list.set(first, list.get(high));
list.set(high,pivot);
return high;
}
else
{
return first;
}
}
'String pivot = list.get(0); //选择第一个元素作为pivot' < - 应该是'list.get(first)'。 – 2013-04-30 02:56:57
谢谢,我发布代码后发现,但它没有解决我遇到的问题。 – 2013-04-30 03:17:53