*8.3 (Sort students on grades) Rewrite Listing 8.2, GradeExam.java, to display the students in increasing order of the number of correct answers.
public class ProgramingEx8_3 { /** Main method */ public static void main(String args[]) { // Students' answers to the questions char[][] answers = { {'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}, {'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'}, {'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'}, {'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'}, {'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}, {'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}, {'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}, {'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}}; // Key to the questions char[] keys = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'}; //Array to keep result int[][] result = new int[answers.length][2]; // Grade all answers for (int i = 0; i < answers.length; i++) { // Grade one student int correctCount = 0; for (int j = 0; j < answers[i].length; j++) { if (answers[i][j] == keys[j]) correctCount++; } result[i][0] = i; result[i][1] = correctCount; } selectionSort(result); //printing out result for (int j = 0; j < result.length; j++) { System.out.println("Student " + result[j][0] + "'s correct count is " + result[j][1]); } } public static void selectionSort(int[][] list) { for (int i = 0; i < list.length - 1; i++) { // Find the minimum in the list[i..list.length-1] int currentMin = list[i][1]; int currentMinIndex = i; for (int j = i + 1; j < list.length; j++) { if (currentMin > list[j][1]) { currentMin = list[j][1]; currentMinIndex = j; } } // Swap list[i] with list[currentMinIndex] if necessary if (currentMinIndex != i) { list[currentMinIndex][1] = list[i][1]; list[i][1] = currentMin; list[currentMinIndex][0] = list[i][0]; list[i][0] = currentMinIndex; } } } }
No comments:
Post a Comment