【发布时间】:2017-08-12 13:08:11
【问题描述】:
//
如果像我一样,目标是在其他代码中使用算法(而不是对算法本身进行编码),Arrays.sort (Documentation here) 就完成了!
//
我不断收到此错误:
Exception in thread "main" java.lang.*Error
at language.LanguageDetection.sort(LanguageDetection.java:140)
at language.LanguageDetection.sort(LanguageDetection.java:141)
at language.LanguageDetection.sort(LanguageDetection.java:141)
还有这一行:
at language.LanguageDetection.sort(LanguageDetection.java:141)
填充控制台输出的其余部分。
我是java初学者,我正在尝试实现一个快速排序算法,以便对包含所有字典单词的文本文件进行排序,这样我就可以快速搜索它。
我真的不知道这是否是要走的路,或者是否会有更合适的排序算法来解决这个问题,但这里是代码:
public static void sort(String[] unsorted, int startIndex, int endIndex)
{
if(endIndex - startIndex <= 0) return; //Ends the recursion when unsorted array is of size 1
String temp;
char pivot = unsorted[endIndex].charAt(0);
int j = startIndex;
for(int i = startIndex; i < endIndex; i++)
{
if(unsorted[i].charAt(0) < pivot)
{
temp = unsorted[j];
unsorted[j] = unsorted[i];
unsorted[i] = temp;
j++;
}
}
temp = unsorted[j];
unsorted[j] = unsorted[endIndex];
unsorted[endIndex] = temp;
sort(unsorted, startIndex, j - 1);
sort(unsorted, j + 1, endIndex);
}
我不想得到所有代码的更正版本,只是一些关于我编码错误的答案以及是否有更好的方法。
提前致谢。
【问题讨论】:
-
将您的解决方案与vogella.com/tutorials/JavaAlgorithmsQuicksort/article.html 进行比较,看看您能做什么。
-
总是会导致堆栈溢出吗? - 如果列表很短,或者工作,例如10 项。
-
听起来您确实需要对列表进行排序以用于其他目的,并且编写排序算法不是最终目标?因此,如果 DIY 不是目标,只需
Arrays.sort即可。 -
@weston 不,它没有,我尝试使用一个小文件,它运行良好,也许快速排序算法不是正确的选择,或者我实施错误......我一直在研究!
-
好吧,它会受到堆栈的限制。你不能像这样对数以百万计的项目进行排序而不破坏堆栈。如果您不知道那是什么,请看这里:*.com/questions/26158/…
标签: java algorithm stack-overflow quicksort