// 私のように、アルゴリズム自体をコーディングするのではなく、他のコードでアルゴリズムを使用するのが目的なら、Arrays.sort
(Documentation here)ジョブ! //クイックソートアルゴリズムの実装でスタックオーバーフローエラーを回避するには
私はこのエラーを取得しておいてください。
Exception in thread "main" java.lang.StackOverflowError
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);
}
私はしたくありませんすべての訂正版のコード、ちょうどいくつかの答え、私が間違ってコーディングしていること、そしてこれを行う良い方法があるかどうかを確認してください。
ありがとうございます。
あなたとこのソリューションを比較するhttp://www.vogella.com/tutorials/JavaAlgorithmsQuicksort/article.htmlそしてあなたができることを見てください。 –
スタックオーバーフローは常に発生しますか?リストが短い場合は作業します。 10項目。 – weston
リストを他の目的でソートする必要があり、ソートアルゴリズムをコーディングするのが最終目標ではないようですね。したがって、DIYが目標ではない場合は、['Arrays.sort'](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(java.lang。オブジェクト[])))。 – weston