0
我嘗試使用java中的快速排序算法以字典順序對Strings
的數組進行排序。該陣列通過終端使用Scanner
讀入並保存在ArrayList
中。這個ArrayList
後來被轉換爲一個數組,我試着在其上應用快速排序算法。 我有兩種方法:字典快速排序
private static void sortA(String[] s, int start, int end) {
if (end > start) {
int pivot = partition(s, start, end);
sortA(s, start, pivot - 1);
sortA(s, pivot + 1, end);
}
}
private static int partition(String[] s, int start, int end) {
String pivot = s[end];
int left = start;
int right = end;
String temp = "";
do {
while ((s[left].compareTo(pivot) <= 0) && (left < end))
left++;
while ((s[right].compareTo(pivot) > 0) && (right > start))
right--;
if (left < right) {
temp = s[left];
s[left] = s[end];
s[right] = temp;
printRow(s);
}
} while (left < right);
temp = s[left];
s[left] = s[end];
s[end] = temp;
return left;
}
代碼似乎隨機做工精細,然後突然沒有。例如,陣列{"java", "application", "system"}
可以很好地分類到{"application", "java", "system"}
。數組{"library", "content", "bin"}
排序爲{"bin", "library", "contents"}
,這不是字典順序。當然,電腦不會隨機工作,所以我的代碼一定有問題。我試圖在紙上制定一個例子,但是我會發現一些完全錯誤的東西。但是,我基於快速排序實現了一個雙數組排序實現,所以我不認爲我犯了一個很大的推理錯誤。 在此先感謝。
謝謝!它現在看起來很有效。我犯了這樣一個愚蠢的錯誤......我儘快接受答案! –