Test105 정렬(Sort) 알고리즘 / 점수가 높은 순으로 등수 결과를 출력하는 프로그램
※ 실습 문제
사용자로부터 여러 학생의 성적 정보를 입력받아 점수가 높은 순으로 등수를 부여하여 결과를 출력하는 프로그램을 구현한다.
단, 배열과 정렬 알고리즘을 활용하여 작성할 수 있도록 한다.
Test105.java
import java.util.Scanner;
import java.io.IOException;
public class Test105
{
public static void main(String[] args) throws IOException
{
Scanner sc = new Scanner(System.in);
int n, i=1, j;
boolean flag;
// 인원 수 입력받기
System.out.print("인원 수 입력 : ");
n = sc.nextInt();
// 인원 수 만큼 배열방 만들기
String name[] = new String[n]; //-- 이름
int score[] = new int[n]; //-- 점수
int grade[] = new int[n]; //-- 석차
String temp;
// 이름, 점수 입력받기
do
{
System.out.print("이름 점수 입력(" + i + ") : ");
name[i-1] = sc.next();
score[i-1] = sc.nextInt();
}
while (i++<n);
// --------------------------------------------------------- 향상된 버블정렬 (Bubble Sort) ------- ①
/*
do
{
flag = false;
for (i=1; i<n; i++)
{
for (j=0; j<n-i; j++)
{
if (score[j] < score[j+1])
{
temp = name[j];
name[j] = name[j+1];
name[j+1] = temp;
score[j] = score[j]^score[j+1];
score[j+1] = score[j+1]^score[j];
score[j] = score[j]^score[j+1];
flag = true;
}
}
}
}
while (flag);
*/
// --------------------------------------------------------------- 버블정렬 (Bubble Sort) ---------- ②
/*
for (i=1; i<n; i++) //-- 뒤에서 뺄셈할 아이
{
for (j=0; j<n-i; j++)
{
if (score[j]<score[j+1]) //-- 내림차순
{
temp = name[j];
name[j] = name[j+1];
name[j+1] = temp;
score[j] = score[j]^score[j+1];
score[j+1] = score[j+1]^score[j];
score[j] = score[j]^score[j+1];
}
}
}
*/
// --------------------------------------------------------------- 선택정렬 (Selected Sort) ---------- ②
for (i=0; i<n-1; i++)
{
for (j=1+i; j<n; j++)
{
if (score[i]<score[j])
{
score[i] = score[i]^score[j];
score[j] = score[j]^score[i];
score[i] = score[i]^score[j];
}
}
}
// 석차 확인하기
for (i=0; i<n; i++)
{
grade[i] = 1; //--1등이라는 가정
for (j=0; j<n; j++)
{
if (score[i]<score[j])
grade[i] += 1;
}
}
// 결과 출력하기
System.out.println("\n--------------");
for (i=0; i<n; i++)
{
System.out.printf("%d등 %s %d\n", grade[i], name[i], score[i]);
}
System.out.println("--------------");
}
}
cmd
인원 수 입력 : 2
이름 점수 입력(1) : 아무무 30
이름 점수 입력(2) : 바바이 50
--------------
1등 아무무 50
2등 바바이 30
--------------
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ Test107_ 클래스 / 상속(Inheritance) / 생성자와 클래스 상속간의 관계 /『super』정의 / @Override (0) | 2018.06.14 |
---|---|
JAVA_ Test106_ 클래스 / 상속(Inheritance) 개요 / 『protected』 / extends (0) | 2018.06.14 |
JAVA_ Test104_ 정렬(Sort) 알고리즘 / 향상된 버블 정렬(Bubble Sort) (0) | 2018.06.14 |
JAVA_ Test103_ 정렬(sort) 알고리즘 / 버블 정렬(Bubble Sort) (0) | 2018.06.14 |
JAVA_ Test102_ 정렬(sort) 알고리즘 / 선택정렬(Selection Sort) (0) | 2018.06.04 |
댓글