I'm learning to analyze the performance of an algorithm. Here, I have created an algorithm to count the number of capital letters in a sentence. But I don't understand how to calculate comparisons in an algorithm. Here is my algorithm:
public class CountCapitalLetters{
public static void main(String[] args) {
String str = "Wonderfull World";
char[] capitalLetters = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
int count = 0;
for (int i = 0; i < str.length(); i ) {
for (int j = 0; j < capitalLetters.length; j ) {
if (capitalLetters[j] == str.charAt(i))
count = 1;
}
}
}
}
And this is the pseudocode:
String str = “Wonderfull World”;
Array capitalLetters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
count = 0
n = length of str
nn = length of capitalLetters
for i = 0 to n
for j = 0 to nn
if capitalLetters[j] == str[i]
count = 1;
endif
endfor
endfor
Can someone help me?
CodePudding user response:
The number of comparisons made is the same as the length of characters of the variable str
times 26.
Number of comparisons = str.length() * 26
This is because you are comparing each and every character in str
to all the capital letters in the array capitalLetters
. Note that I said "character" and not letter, so any spaces in str
is also included.
Have a look at this program:
public class Test
{
public static void main(String[] args)
{
String str = "Wonderfull World" ;
char[] capitalLetters = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'} ;
int capitalLetterCount = 0 ;
int comparisonCount = 0 ;
for (int i = 0; i < str.length(); i )
{
for (int j = 0; j < capitalLetters.length; j )
{
if(capitalLetters[j] == str.charAt(i)) // if the letter is a capital letter
capitalLetterCount = 1;
comparisonCount =1 ; // as a comparison has been made above
}
}
System.out.println("Number of capital letters: " capitalLetterCount) ;
System.out.println("Number of capital comparisons made: " comparisonCount) ;
int c = str.length() * 26 ;
System.out.println(c) ;
}
}
Every time a comparison is made, the variable comparisonCount
is incremented by 1. Run the program and see that both the variables comparisonCount
and c
have the same values.