<정렬 기본예제>
class SortTest{
public static void main(String[] args) {
int a[] = {76, 16, 7, 24, 20, 33};
// 정렬 : 값을 순서대로 놓는것을 말함,
// 오름차순, 내림차순
for (int i =0; i < 6 ; i++ ){
for(int j =i+1; j<6; j++){
if (a[j] < a[i]){
int temp = a[i];
a[i] = a[j] ;
a[j] = temp;
}
}
}
for (int i=0; i <6 ;i++ ){
System.out.print(a[i] + " ");
}
}
}
<성적순으로 출력하는 예제>
<순서>
1. 기본구조 : 성적순으로 출력되도록 하기
2. 이름과 성적이 같이 정렬되게 하기
3. 사용자 정의 사용 전
4. 사용자 정의 사용 후 (일단 한사람만 입력)
5. 사용자 정의 사용 후 (생성자 이용한 것)
6. 사용자 정의 사용 후 (생성자 이용, 여러명 입력)
<코드1>
기본구조 : 성적순으로 출력되도록 하기
class SortTest02 {
public static void main(String[] args) {
String name[] = {"사용자1","사용자2","사용자3","사용자4","사용자5"};
int score[] = {80,90,100,70,60};
//모든 학생의 정보를 출력
System.out.println("이름\t점수");
for (int i =0; i <5 ;i++ ){
System.out.println(name[i] + "\t" + score[i]);
}
}
}
<코드2>
: 이름과 성적이 같이 정렬되게 함
class SortTest2 {
public static void main(String[] args) {
String name[] = {"사용자1","사용자2","사용자3","사용자4","사용자5"};
int score[] = {80,90,100,70,60};
/*
//모든 학생의 정보를 출력
System.out.println("이름\t점수");
for (int i =0; i <5 ;i++ ){
System.out.println(name[i] + "\t" + score[i]);
}
*/
for (int i =0; i <5 ; i++ ){ // 최종값에 i < 5 이것은 i < 4를 주어야 한다 j 에 i+1이기때문에 5를 초과하므로...
for (int j = i+1; j <5 ; j++ ){
if (score[j] > score[i]){
int temp = score[i];
score[i] = score[j];
score[j] = temp;
String str = name[i];
name[i] = name[j];
name[j] = str;
}
}
}
for (int i =0; i < 5 ; i++ ){
System.out.println(name[i]+ " " + score[i] + " ");
}
}
}
<코드3>
: 사용자 정의 배우기 전 예제
class SortTest3{
public static void main(String[] args){
String name[] = {"사용자1","사용자2","사용자3","사용자4","사용자5"};
int kor[] = {50,60,70,80,100};
int eng[] = {60,70,80,90,100};
int math[] = {100,80,90,100,80};
int tot[] = new int[5];
int avg[] = new int[5];
// 총점, 평균을 각각 계산하여 성적순으로 정렬하여 출력
for (int i = 0 ; i < 5 ; i++ ){
tot[i] = kor[i] + eng[i] + math[i];
avg[i] = tot[i] / 3;
}
// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (avg[j] > avg[i]){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
String str = name[i];
name[i] = name[j];
name[j] = str;
int temp = kor[i];
kor[i] = kor[j];
kor[j] = temp;
temp = eng[i];
eng[i] = eng[j];
eng[j] = temp;
temp = math[i];
math[i] = math[j];
math[j] = temp;
temp = tot[i];
tot[i] = tot[j];
tot[j] = temp;
temp = avg[i];
avg[i] = avg[j];
avg[j] = temp;
}
}
}
System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(name[i]+"\t"+kor[i]+"\t"+eng[i]+"\t"+math[i]+"\t"+tot[i]+"\t"+avg[i]);
}
}
}
<코드4 설명>
한사람의 정보( 이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 만들어 두면 프로그램하기가 훨씬 수월해 진다.
==> 여러가지 정보를 하나의 세트로 만드는 사상을 '새로운 자료형' 이라고 한다
기본자료형 : boolean, char, byte, short, int, long, float, double
기본 자료형 만으로는 프로그램 하기가 복잡해져서
사용자가 새로운 자료형을 만들 수 있다.
==> class
<코드4>
: 사용자 정의 사용 후 (일단 한사람만 입력)
class Student{
String name;
int kor;
int eng;
int math;
int tot;
int avg;
}
class SortTest4{
public static void main(String[] args){
Student s;
s = new Student(); // 클래스는 객체를 생성하고 객체를 통해서 사용할 수 있다.
s.name = "사용자1";
s.kor = 100;
s.eng = 80;
s.math = 70;
s. tot = s.kor+s.eng+s.math;
s. avg = s.tot / 3;
System.out.println(s.name + " " + s.tot + " " + s.avg);
/*
Student s[] = new Student[5];
// 총점, 평균을 각각 계산하여 성적순으로 정렬하여 출력
for (int i = 0 ; i < 5 ; i++ ){
tot[i] = kor[i] + eng[i] + math[i];
avg[i] = tot[i] / 3;
}
// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (avg[j] > avg[i]){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
String str = name[i];
name[i] = name[j];
name[j] = str;
int temp = kor[i];
kor[i] = kor[j];
kor[j] = temp;
temp = eng[i];
eng[i] = eng[j];
eng[j] = temp;
temp = math[i];
math[i] = math[j];
math[j] = temp;
temp = tot[i];
tot[i] = tot[j];
tot[j] = temp;
temp = avg[i];
avg[i] = avg[j];
avg[j] = temp;
}
}
}
System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(name[i]+"\t"+kor[i]+"\t"+eng[i]+"\t"+math[i]+"\t"+tot[i]+"\t"+avg[i]);
}
*/
}
}
<코드5 설명> (코드4와 동일)
한사람의 정보( 이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 만들어 두면 프로그램하기가 훨씬 수월해 진다.
==> 여러가지 정보를 하나의 세트로 만드는 사상을 '새로운 자료형' 이라고 한다
기본자료형 : boolean, char, byte, short, int, long, float, double
기본 자료형 만으로는 프로그램 하기가 복잡해져서
사용자가 새로운 자료형을 만들 수 있다.
==> class
<코드5>
class Student{
String name;
int kor;
int eng;
int math;
int tot;
int avg;
//생성자(대소문자구별, 클래스와 똑같아야함)
//소괄호 안에는 받아올 변수이름을 지정한다
Student(String n, int k, int e, int m){
name = n;
kor = k;
eng = e;
math = m;
tot = kor + eng + math;
avg = tot / 3;
}
}
class SortTest5{
public static void main(String[] args){
Student s;
s = new Student("사용자1", 100, 80, 70); // 클래스는 객체를 생성하고 객체를 통해서 사용할 수 있다.
System.out.println(s.name + " " + s.tot + " " + s.avg);
/*
Student s[] = new Student[5];
// 총점, 평균을 각각 계산하여 성적순으로 정렬하여 출력
for (int i = 0 ; i < 5 ; i++ ){
tot[i] = kor[i] + eng[i] + math[i];
avg[i] = tot[i] / 3;
}
// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (avg[j] > avg[i]){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
String str = name[i];
name[i] = name[j];
name[j] = str;
int temp = kor[i];
kor[i] = kor[j];
kor[j] = temp;
temp = eng[i];
eng[i] = eng[j];
eng[j] = temp;
temp = math[i];
math[i] = math[j];
math[j] = temp;
temp = tot[i];
tot[i] = tot[j];
tot[j] = temp;
temp = avg[i];
avg[i] = avg[j];
avg[j] = temp;
}
}
}
System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(name[i]+"\t"+kor[i]+"\t"+eng[i]+"\t"+math[i]+"\t"+tot[i]+"\t"+avg[i]);
}
*/
}
}
<코드6 설명> (코드4, 5와 동일)
한사람의 정보( 이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 만들어 두면 프로그램하기가 훨씬 수월해 진다.
==> 여러가지 정보를 하나의 세트로 만드는 사상을 '새로운 자료형' 이라고 한다
기본자료형 : boolean, char, byte, short, int, long, float, double
기본 자료형 만으로는 프로그램 하기가 복잡해져서
사용자가 새로운 자료형을 만들 수 있다.
==> class
<코드6>
: 사용자 정의 사용 후 (생성자 이용, 여러명 입력)
class Student{
String name;
int kor;
int eng;
int math;
int tot;
int avg;
//생성자(대소문자구별, 클래스와 똑같아야함)
//소괄호 안에는 받아올 변수이름을 지정한다
Student(String n, int k, int e, int m){
name = n;
kor = k;
eng = e;
math = m;
tot = kor + eng + math;
avg = tot / 3;
}
}
class SortTest5{
public static void main(String[] args){
Student st[] = new Student[5];
st[0] = new Student("사용자1", 80 ,90 ,100);
st[1] = new Student("사용자2", 90 ,80 ,100);
st[2] = new Student("사용자3", 60 ,70 ,80);
st[3] = new Student("사용자4", 70 ,70 ,80);
st[4] = new Student("사용자5", 100 ,100 ,90);
// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (st[j].avg > st[i].avg){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
Student temp = st[i];
st[i] = st[j];
st[j] = temp;
}
}
}
System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(st[i].name+"\t"+st[i].kor+"\t"+st[i].eng+"\t"+st[i].math+"\t"+st[i].tot+"\t"+st[i].avg);
}
}
}