Java Challenge - Top Score Sorter

This community-built FAQ covers the “Top Score Sorter” code challenge in Java. You can find that challenge here, or pick any challenge you like from our list.

Top Discussions on the Java challenge Top Score Sorter

There are currently no frequently asked questions or top answers associated with this challenge – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this challenge. Ask a question or post a solution by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this challenge, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!
You can also find further discussion and get answers to your questions over in #get-help.

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head to #get-help and #community:tips-and-resources. If you are wanting feedback or inspiration for a project, check out #project.

Looking for motivation to keep learning? Join our wider discussions in #community

Learn more about how to use this guide.

Found a bug? Report it online, or post in #community:Codecademy-Bug-Reporting

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

import java.util.*;

public class ScoreSorter {
public static void main(String args) {
int answer = scoreSorter(new int{1, 2, 3, 9999, 13}, 10000);
for (int i = 0; i < answer.length; i++) {
System.out.println(answer[i]);
}
}
public static int reversedArray(int array){
int last = array.length - 1;
int middle = array.length / 2;
for(int i=0;i<middle;i++){
int temp=array[i];
array[i]=array[last-i];
array[last-i]=temp;
}
return array;
}

public static int scoreSorter(int array, int topScore) {
// Write your code here
Arrays.sort(array);
reversedArray(array);

return array;

}
}

I filtered out anything bigger than the top score possible,
and I sorted the array
by making another array for the sorted version,
and then finding the highest number in the original array, and adding it to the sorted array
then the next highest, and adding that as the next thing in the sorted array,
and so on.

my code
import java.util.*;

public class ScoreSorter {
  
  public static int getNextMax(int[] array, boolean[] available, boolean changeInAvailable) {
    int length = array.length;
    boolean started = false;
    int max_so_far = 0;
    int index_of_max = 0;
    for (int i = 0; i < length; i++) {
      if (available[i]) {
        if (!started || (array[i] > max_so_far)) {
          max_so_far = array[i];
          index_of_max = i;
          started = true;
        }
      }
    }
    if (changeInAvailable) {
      available[index_of_max] = false;
    }
    return max_so_far;
  };
  
  public static int[] scoreSorter(int[] array, int topScore) {
    int length = array.length;
    int validCount = 0;
    for (int i = 0; i < length; i++) {
      if (array[i] <= topScore) {
        validCount++;
      }
    }
    boolean[] available = new boolean[length];
    for (int i = 0; i < length; i++) {
      available[i] = (array[i] <= topScore);
    }

    int[] sorted = new int[validCount];
    for (int j = 0; j < validCount; j++) {
      sorted[j] = getNextMax(array, available, true);
    }

    return sorted;
  }

  public static void main(String[] args) {
    int[] demo = new int[]{1, 2, 3, 9999, 13};
    int[] answer = scoreSorter(demo, 10000);
    System.out.print("[");
    for (int i = 0; i < answer.length; i++) {
      System.out.print(answer[i]);
      if (i != answer.length - 1) {
        System.out.print(", ");
      }
    }
    System.out.println("]");
  }
}

Hi everyone!!

Well I think I tried to do it the simplest possible, heres my code,

import java.util.*;

public class ScoreSorter {
public static void main(String args) {
int answer = scoreSorter(new int{1, 2, 3, 9999, 13}, 10000);
for (int i = 0; i < answer.length; i++) {
System.out.println(answer[i]);
}
}

public static int scoreSorter(int array, int topScore) {
// Write your code here
int temp = 0;
for(int i = 0; i < array.length; i++){
for(int j = i+1; j< array.length; j++){
if(array[i] < array[j]){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return array;
}
}

Here’s my solution using selection sort in Java

import java.util.*;

public class ScoreSorter {
    public static void main(String[] args) {
        int[] answer = scoreSorter(new int[]{1, 2, 3, 9999, 13}, 10000);
        for (int i = 0; i < answer.length; i++) {
            System.out.println(answer[i]);
        }
    }

    public static int[] scoreSorter(int[] array, int topScore) {
        int temp;

        // Per traversal:
        // Find the max number in array, swap location with num at the front
        for (int i = 0; i < array.length - 1; i++) {
            int indexOfMax = i;

            // Traverse array to determine max number
            // Get index of that max number for swapping
            for (int j = i + 1; j < array.length; j++)
                if (array[j] > array[indexOfMax])
                    indexOfMax = j;

            // Swap values (2, 3) --> (3, 2)
            temp = array[indexOfMax];
            array[indexOfMax] = array[i];
            array[i] = temp;
        }

        return array;
    }
}