3 回答
TA贡献1828条经验 获得超13个赞
您的交换功能不起作用,这就是为什么quick
您的阵列保持不变的原因。
这正好解决了您的问题:Java: Why does does this swap method not work? -- 这些是基本概念,理解它们是值得的。
无论如何,既然你正在处理一个数组,你可以这样去做:
/** Swap array[i] and array[j] */
public static void swap(int[] array, int i, int j)
{
int t = array[i];
array[i] = array[j];
array[j] = t;
}
注意:我没有深入研究你的排序逻辑——一旦这个问题得到解决,你也许就能弄明白。
TA贡献1869条经验 获得超4个赞
调用 swap 时实际上并没有交换数组元素。该方法所做的只是交换参数。
您可以将数组与索引一起传递到交换方法中,或者更实际地说,只需将交换代码复制到您的部分方法中
TA贡献1777条经验 获得超10个赞
我不知道您是否正在学习 QuickSort,但是如果您想要一种快速对数字列表进行排序的方法,我建议您使用 ArrayList,它基本上是这样声明的:
ArrayList<Integer> yourArrayList = new ArrayList<Integer>();
在菱形运算符 (<>) 中插入数据类型,在本例中为Integer,但您也可以插入Double以获得小数结果。
声明后,您必须添加您的号码:
yourArrayList.add(1)
yourArrayList.add(3);
ETC...
完成后使用Collections.sort(yourArrayList);
我希望我很清楚,这是使用它的代码:
ArrayList<Integer> yourArrayList = new ArrayList<Integer>();
yourArrayList.add(10);
yourArrayList.add(3);
yourArrayList.add(7);
yourArrayList.add(-3);
Collections.sort(yourArrayList);
System.out.println(yourArrayList);
添加回答
举报