Вот мой код Java.(Объяснение в конце)
import java.util.Scanner;
import java.util.Arrays;
/**
*
* @author Laksh
*/
public class Sort4 {
public static void Swap(int[] array,int Swap1,int Swap2){
int temporarySwapper;
temporarySwapper=array[Swap1];
array[Swap1]=array[Swap2];
array[Swap2]=temporarySwapper;
}
public static void Swap(String[] array,int Swap1,int Swap2){
String temporarySwapper;
temporarySwapper=array[Swap1];
array[Swap1]=array[Swap2];
array[Swap2]=temporarySwapper;
}
public static String[] alphasort(String[] original, int level, int start, int end ){
int swaps;
int[] array=new int[original.length];
for(int i=0;i<original.length;i++){
array[i]=(int)original[i].charAt(level);
}
do{
swaps=0;
for(int i=start;i<end;i++){
if(array[i]>array[i+1]){
Swap(original,i,i+1);
Swap(array,i,i+1);
swaps++;
}
}
}while(swaps != 0);
return Arrays.copyOfRange(original, start, end+1);
}
public static String repeat(String s,int times){
String returnString="";
for(int i=0;i<times;i++){
returnString+=s;
}
return returnString;
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("Enter 5 Names:");
int max=Integer.MIN_VALUE;
String[] name=new String[5];
for(int i=0;i<5;i++){
name[i]=input.next();
if(name[i].length()>max){
max=name[i].length();
}
}
for(int i=0;i<5;i++){
if(name[i].length()<max){
name[i]=name[i]+repeat(" ",max-name[i].length());
}
}
String[] sorted=alphasort(name,0,0,name.length-1);
for(String c:sorted){
System.out.println(c);
}
}
}
Чтобы прояснить проблемы, с которыми я сталкиваюсь, мой код основан на поиске целочисленного значения ascii для символа, а затем на сортировке целочисленного массива.Если первая буква строки, которую я пытаюсь найти, равна первой из другой, код переходит ко второй букве и т. Д.Чтобы избежать строкового индекса за пределами границ, я использовал метод «repeat», чтобы добавить достаточное количество пробелов в конец каждой строки, чтобы они все имели одинаковую длину, поскольку строки одинаковой длины предотвратят это.Проблема, с которой я сталкиваюсь, заключается в том, что она сортируется правильно, но в некоторых местах происходит сбой. Например,
, если я передаю слова «масло» и «бабочка», то они выдаются в том порядке, в котором они были введены.по отношению к другим значениям, которые отсортированы правильно!Например:
butter
cookie
butterfly
cookiemonster
ninja
сортирует по
butter
butterfly
cookie
cookiemonster
ninja
, тогда как
butterfly
cookie
butter
cookiemonster
ninja
сортирует по
butterfly
butter
cookie
cookiemonster
ninja
Помогите мне, как яне могу найти мою ошибку.