у меня есть этот методВременной сложность для зависимых функций
public static void primeSort(String[] list, HashMap< Integer, ArrayList<String>> hm){
for(int x=0; x<list.length; x++){
if(list[ x ] == null) continue;
String curX = list[ x ];
int hashX = primeHash(curX);
hm.put(hashX, new ArrayList(Arrays.asList(curX)));
for(int y=x+1; y<list.length; y++){
String curY = list[ y ];
int hashY = primeHash(curY);
if(curY == null || curY.length() != curX.length()) continue;
if(hashX == hashY){
hm.get(hashX).add(curY);
list[ y ] = null; // if its an anagram null it out to avoid checking again
}
}
}
}
, который вызывает этот метод:
public static int primeHash(String word){
int productOfPrimes = 1;
int prime[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101 };
for(char ch : word.toCharArray()){
productOfPrimes *= prime[ (int) ch - (int) 'a' ];
}
return productOfPrimes;
}
Цель состоит в том, чтобы взять список строк и сортировать их в анаграммы, возвращающий список, содержащий анаграммы, сгруппированные в список.
Я пытаюсь определить временную сложность, но это немного сложно. primeSort будет наихудший O (N^2) и лучший случай О (п)
primeHash будет работать m
раз каждый раз, когда она называется, где m
длина текущей строки. Я не уверен, как это будет проанализировано и как его можно объединить с анализом для PrimeSort.
Любая помощь приветствуется, спасибо :)