Сортировка по имени - PullRequest
       29

Сортировка по имени

0 голосов
/ 27 сентября 2011

У меня проблемы с сортировкой имен в алфавитном порядке с использованием сортировки с подсчетом, например, я полагаю, что сортировка выполняется в алфавитном порядке и к ней добавлен ввод чисел, например 0001 Alex Smith, Gregory John, Alex Smith, Adam Richard, Alex Ryan. Вывод должен быть в следующем порядке:

Адам Ричард
Алекс Райан
Алекс Смит
Грегори Джон

Пока мой код:

public class Names 
{
    //private static int[] c;

 public ArrayList<String> getUserInput()
{
        ArrayList<String> names = new ArrayList<String>(); 
    Scanner in = new Scanner(System.in);
    while (in.hasNext()) 
     {
         names.add(in.next());  
        System.out.println(names); 
     }
      in.close();
    return names;
}
 private static CountingSort(int A[], int B[], int k[])
{
    int i;
    int C[0];
    for(i = 0; i <= k; i++){
        C[i]=0;
    }

    for(int j=1; j <= A.length; ){
        C[A[j]] = C[A[j]] + 1;
    }//C[i] now contains numbers of elements equals to i
    for(int i=1; i < k; i++){
        C[i] = C[i] + C[i - 1];

    }
    for(int j = A.length; j--){
    B[C[A[j]]] = A[j];
    C[A[j]] = C[A[j]] - 1;   
   }
}
}

1 Ответ

0 голосов
/ 26 августа 2015

Подсчет сортировки - неправильный алгоритм сортировки для этой проблемы. Алгоритм счетной сортировки предназначен для сортировки целочисленных значений, которые находятся в фиксированном диапазоне, поэтому его нельзя применять для сортировки строк.

С другой стороны, вы могли бы использовать радикальную сортировку для этой проблемы. Radix sort работает путем сортировки ввода по одной цифре или символу за раз, и это очень хорошо подходит для сортировки строк. Существует два основных вида сортировки по основанию: сортировка по значащим значащим цифрам и сортировка по наименее значащим знакам. Аспект MSD радикальной сортировки не слишком напоминает счетную сортировку, но LSD радикальная сортировка работает, используя сортировку по одному символу за раз. Если вам действительно нужно использовать сортировку с подсчетом, я бы порекомендовал изучить сортировку по радикалу LSD в качестве опции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...