Есть проблема сортировки вставки строк
Вот результат aa cc dd ee Koko Yoko Yolo ii
Я в замешательстве. Коко Йоко и Йоло это должно быть в самом начале, верно?
Я проверил весь код в течение 3 раз. Не мог найти никаких ошибок.
Пожалуйста, укажите, где я ошибся.
Да, я знаю, что это, вероятно, не самое оптимальное решение.
Что я уже пробовал:
class InsertionSort { public static String[] sort (String a[]) { String key="0"; int k=0; boolean If; String temp1,temp2; for (int i = 1; i <= a.length-1; i++) { If = false; key = a[i]; for (int o = i-1; o > -1; o--) { boolean u; if (o==0) u = StrComp(a[o] , key); else u = (StrComp(a[o], key)) && (StrComp(key, a[o-1])); if (u) {k = o; If = true; break; } } if (If==true){ temp1 = temp2 = "-1"; for (int o = k; o < i ; o++) { temp2 = a[o+1]; if (temp1 == "-1") a[o+1] = a[o]; else a[o+1] = temp1; temp1 = temp2; } a[k]=key; } } return a; } public static Boolean StrComp (String a, String b) { if (a==b) return true; int alength=a.length()-1; int blength=b.length()-1; for (int i=0; i <= alength; i++){ if (i <= blength){ char cha = a.charAt(i); char chb = b.charAt(i); if (cha != chb) if (cha > chb) return true;} else return true; } return false; } } class Insertion1 { public static void main(String args[]){ String array2[] = {"aa","ii","cc", "dd", "ee", "Yoko", "Koko", "Yolo"}; array2 = InsertionSort.sort(array2); for (String i: array2) System.out.print(i + " "); } }
RickZeeland
Я не программист на Java, но я попробовал код на https://www.tutorialspoint.com/compile_java8_online.php и обнаружил, что когда все строки строчные, это работает так, как ожидалось. Так что, возможно, совет должен быть таким: используйте .NET :)
Member 13769403
К сожалению, я с ними не знаком .Net пока нет. В моем браузере он почему-то вообще не компилируется (по ссылке, которую вы дали) o_O .
RickZeeland
Просто шучу, я использовал браузер Microsoft Edge и сделал класс Insertion1 общедоступным, удачи !