JAVA_OOP로 만든 sort(오름차순, 내림차순)

박예린·2022년 12월 27일
0

Java

목록 보기
18/23

절차지향프로그래밍으로 만들었던 정렬 프로그램을 객체지향프로그래밍으로 만들었다.

절차지향_sort코드

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;
	}

}

객체지향_sort코드

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();

	}

}
profile
개발자를 꿈꾸는 귀여운 나

0개의 댓글