Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
75
Task/Ranking-methods/Java/ranking-methods.java
Normal file
75
Task/Ranking-methods/Java/ranking-methods.java
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
import java.util.*;
|
||||
|
||||
public class RankingMethods {
|
||||
|
||||
final static String[] input = {"44 Solomon", "42 Jason", "42 Errol",
|
||||
"41 Garry", "41 Bernard", "41 Barry", "39 Stephen"};
|
||||
|
||||
public static void main(String[] args) {
|
||||
int len = input.length;
|
||||
|
||||
Map<String, int[]> map = new TreeMap<>((a, b) -> b.compareTo(a));
|
||||
for (int i = 0; i < len; i++) {
|
||||
String key = input[i].split("\\s+")[0];
|
||||
int[] arr;
|
||||
if ((arr = map.get(key)) == null)
|
||||
arr = new int[]{i, 0};
|
||||
arr[1]++;
|
||||
map.put(key, arr);
|
||||
}
|
||||
int[][] groups = map.values().toArray(new int[map.size()][]);
|
||||
|
||||
standardRanking(len, groups);
|
||||
modifiedRanking(len, groups);
|
||||
denseRanking(len, groups);
|
||||
ordinalRanking(len);
|
||||
fractionalRanking(len, groups);
|
||||
}
|
||||
|
||||
private static void standardRanking(int len, int[][] groups) {
|
||||
System.out.println("\nStandard ranking");
|
||||
for (int i = 0, rank = 0, group = 0; i < len; i++) {
|
||||
if (group < groups.length && i == groups[group][0]) {
|
||||
rank = i + 1;
|
||||
group++;
|
||||
}
|
||||
System.out.printf("%d %s%n", rank, input[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private static void modifiedRanking(int len, int[][] groups) {
|
||||
System.out.println("\nModified ranking");
|
||||
for (int i = 0, rank = 0, group = 0; i < len; i++) {
|
||||
if (group < groups.length && i == groups[group][0])
|
||||
rank += groups[group++][1];
|
||||
System.out.printf("%d %s%n", rank, input[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private static void denseRanking(int len, int[][] groups) {
|
||||
System.out.println("\nDense ranking");
|
||||
for (int i = 0, rank = 0; i < len; i++) {
|
||||
if (rank < groups.length && i == groups[rank][0])
|
||||
rank++;
|
||||
System.out.printf("%d %s%n", rank, input[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ordinalRanking(int len) {
|
||||
System.out.println("\nOrdinal ranking");
|
||||
for (int i = 0; i < len; i++)
|
||||
System.out.printf("%d %s%n", i + 1, input[i]);
|
||||
}
|
||||
|
||||
private static void fractionalRanking(int len, int[][] groups) {
|
||||
System.out.println("\nFractional ranking");
|
||||
float rank = 0;
|
||||
for (int i = 0, tmp = 0, group = 0; i < len; i++) {
|
||||
if (group < groups.length && i == groups[group][0]) {
|
||||
tmp += groups[group++][1];
|
||||
rank = (i + 1 + tmp) / 2.0F;
|
||||
}
|
||||
System.out.printf("%2.1f %s%n", rank, input[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue