1
Я пытаюсь создать свой собственный метод двоичной сортировки текста, хотя я успешно скомпилировал его, но он действительно не заканчивает задание сортировки и не возвращает значение null. Может кто-нибудь помочь указывать на проблему? Большое спасибо!!(Обработка текста Java) Сортировка текстового метода и результатов в null?
class mergesort{
//main method
public static void main(String [] args) throws IOException{
String [] words = readWords(args[0]);
long t1 = new Date().getTime();
mergesort(words);
long t2 = new Date().getTime();
System.out.println("execution time:" + (t2 - t1) + " milliseconds");
prWords(words);
}
//method for reading file
public static String [] readWords(String fn)throws IOException{
BufferedReader br = new BufferedReader(new FileReader(fn));
String line = "";
StringBuilder allwords = new StringBuilder();
while ((line = br.readLine())!= null){
String [] items = line.trim().split("\\s+");
allwords.append(convertCase(items[0])+"\t");
}
br.close();
return allwords.toString().split("\t");
}
//Convert Case method
public static String convertCase(String n){
String firstWd = n;
firstWd = n.charAt(0) + n.substring(1).toLowerCase();
return firstWd;
}
public static String [] sortedWs = {};
public static void mergesort(String [] Ws){
sortedWs = new String[Ws.length];
mergesort(Ws, 0, Ws.length);
}
public static void mergesort(String [] Ws, int bgn, int end){
if (end - bgn == 1) return;
int mid = (bgn+end)/2;
mergesort(Ws, bgn, mid);
mergesort(Ws, mid, end);
merge(Ws, bgn, end);
}
public static void merge(String [] Ws, int bgn, int end){
int mid = (bgn+end)/2;
int b1 = bgn;
int b2 = end;
int x = 0;
while (b1 < mid && b2 < end) {
if (Ws[b1].compareTo(Ws[b2]) <= 0){
sortedWs[x] = Ws[b1]; b1++; x++;
} else {
sortedWs[x] = Ws[b2]; b2++; x++;
}
}
//copy the rest
if (b1 >= mid)
while (b2 < end) { sortedWs[x] = Ws[b2]; b2++; x++; }
if (b2 >= end)
while (b1 < mid) { sortedWs[x] = Ws[b1]; b1++; x++; }
for(int i = 0; i < end-bgn; i++) {
Ws[bgn+i] = sortedWs[i];
}
}
public static void prWords(String [] strs){
for (String x : strs){
System.out.println(x);
}
}
Большое спасибо, насколько я рассеян. lol – Yoyashi
Это обычно для большинства из нас. :-) В какой-то момент вы научитесь использовать отладчик, это отличный инструмент для сортировки таких небольших ошибок (и больших). –
@Yoyashi, извините, что я упоминал об этом, но когда я просматриваю вашу историю вопроса, мне кажется, вы забываете отметить наиболее полезные ответы, как принято? (отметьте отметку слева от ответа) [Ссылка] (http://stackoverflow.com/help/someone-answers) –