절차지향프로그래밍으로 만들었던 정렬 프로그램을 객체지향프로그래밍으로 만들었다.
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
/*
* sorting : 숫자의 크기 순으로 정렬하는 방법
* 낮은 숫자부터 정렬 - 오름차순 정렬
* 높은 숫자부터 정렬 - 내림차순 정렬
*/
///////////////////////////////////////////////////////input
//int number[] = { 3, 6, 4, 8, 1, 5, 2, 7};
//변수의 선언
int number[]= null;
int count; //숫자 몇개를 소팅할 것인지
int updown; //오름차순으로 할거야 내림차순으로 할거야?
//변수의 초기화
count = 0;
updown = 0;
//정렬하고 싶은 숫자의 갯수
System.out.print("정렬하고 싶은 수의 갯수 = ");
count = sc.nextInt(); //숫자 갯수 user input
//배열에 그 갯수에 맞게 할당
number = new int[count];
//숫자들을 입력
for(int i=0; i<count; i++) {
System.out.print((i+1) + "번째 수 = ");
number[i] = sc.nextInt(); //배열에 저장될 숫자들을 user input
}
//오름(1)/내림(2)
System.out.print("오름(1) /내림(2) =");
updown = sc.nextInt();
//////////////////////////////////////////////////////
////////////////////////////////////////////////////sorting
int temp = 0; //swap
for(int i=0; i<number.length - 1; i++) { //i는 index 0~6
for(int j = i + 1; j<number.length; j++) { //index번호 0이랑 0을 비교할 필요x 그러므로 1부터 시작
//j는 index 1~7
if(updown ==1) {
if(number[i] > number[j]) { //앞에 있는 숫자 number[i]가 더 크면 뒤로 보내줘야 함
//부등호 방향을 바꾸면 내림차순
swap(number,i,j);
//swap
//temp = number[i];
//number[i] = number[j];
//number[j] = temp;
}
}else { //내림
if(number[i] < number[j]) { //앞에 있는 숫자 number[i]가 더 크면 뒤로 보내줘야 함
//부등호 방향을 바꾸면 내림차순
//swap
//temp = number[i];
//number[i] = number[j];
//number[j] = temp;
swap(number,i,j);
}
}
}
}
/////////////////////////////////////////////////output
if(updown == 1) {
System.out.println("오름차순 정렬입니다.");
}else {
System.out.println("내림차순 정령입니다.");
}
for (int i = 0; i < number.length; i++) {
System.out.println("number[" + i + "] = " + number[i]);
}
}
static void swap(int number[], int i, int j) {
int temp;
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
public class Sorting {
//멤버변수 -> 이 내부에서는 변수 접근 가능
int number[]; //user에게 input받을 숫자들 -> 배열
int updown; //오름차순, 내림차순을 정할 변수
//(멤버)메소드
public void init() { //초기화
number = null;
updown = 0;
}
//함수 이름 : input
//목적 : user input
public void input() { //입력
Scanner sc = new Scanner(System.in);
System.out.println("정렬할 숫자의 갯수 = ");
int count = sc.nextInt(); //정렬할 숫자의 갯수 user input
number = new int[count]; //할당
for (int i = 0; i < number.length; i++) {
System.out.println((i+1) + "번째 수 = "); //숫자들 입력
number[i] = sc.nextInt();
}
System.out.println("오름(1) / 내림(2)"); //오름차순, 내림차순 선택 입력받기
updown = sc.nextInt();
}
//함수 이름 : sorting
//목적 : 정렬
public void sorting() { //정렬
int temp; //swap위한 변수
for (int i = 0; i < number.length -1; i++) {
for (int j = i+1; j < number.length; j++) {
//오름차순일 때
if(updown ==1) {
if(number[i] > number[j]) {
//swap
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
//내림차순일 때(부등호 기호만 반대)
}else {
if(number[i] < number[j]) {
//swap
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
}
}
}
//함수 이름 : result
//목적 : 결과 출력
public void result() { //결과 출력
for (int i = 0; i < number.length; i++) {
System.out.println(number[i] +" ");
}
System.out.println();
}
}
//main class
import sort.Sorting;
public class MainClass {
public static void main(String[] args) {
//객체 생성
Sorting sort = new Sorting();
//객체화
sort.init();
sort.input();
sort.sorting();
sort.result();
}
}