본문 바로가기
IT/Java

Java 선택정렬, 버블정렬

by 바른롱매 2020. 2. 14.

[ 출처 - 위키백과 ]

선택 정렬(selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다.

  1. 주어진 리스트 중에 최소값을 찾는다.
  2. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)).
  3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.

선택 정렬은

알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있습니다.

 

 

 

 

/*
    Selection Sort
    선택 정렬
    swap > < 숫자를 교환
*/
Scanner sc = new Scanner(System.in);

int number[];
int temp, sort_num;

String str;

System.out.print("몇개를 정렬하시겠습니까 : ");

sort_num = sc.nextInt();
number = new int[sort_num]; // 할당을 함

for (int i = 0; i < number.length; i++) {
	System.out.print("number[" + (i + 1) + "]번째 데이터를 입력 = ");
	number[i] = sc.nextInt();
}

System.out.print("올림차순이나 내림차순을 선택하세요(올림/내림) = ");

str = sc.next();
for (int i = 0; i < number.length - 1; i++) {
	for (int j = i + 1; j < number.length; j++) {
		if (str.equals("올림") ? number[i] > number[j] : number[i] < number[j]) {
			temp = number[i]; // swap
			number[i] = number[j];
			number[j] = temp;
		}
	}
}

for (int i = 0; i < number.length; i++) {
	System.out.println("number[" + (i + 1) + "] = " + number[i]);
}
        
/*
    몇개를 정렬하시겠습니까 : 3
    number[1]번째 데이터를 입력 = 5
    number[2]번째 데이터를 입력 = 7
    number[3]번째 데이터를 입력 = 3
    올림차순이나 내림차순을 선택하세요(올림/내림) = 올림
    number[1] = 7
    number[2] = 5
    number[3] = 3
*/
        

[ 출처 - 위키백과 ]

버블정렬

거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다.

 

시간 복잡도가 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다.

 

원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다

 

 

Scanner sc = new Scanner(System.in);
int number[];
int temp, sort_num;

String str;

System.out.print("몇개를 정렬하시겠습니까 : ");

sort_num = sc.nextInt();
number = new int[sort_num]; // 할당을 함

for (int i = 0; i < number.length; i++) {
	System.out.print("number[" + (i + 1) + "]번째 데이터를 입력 = ");
	number[i] = sc.nextInt();
}

System.out.print("올림차순이나 내림차순을 선택하세요(올림/내림) = ");

str = sc.next();

for (int i = 0; i < number.length - 1; i++) {
	for (int j = 1; j < number.length - i; j++) {
		if (str.equals("올림") ? number[j - 1] > number[j] : number[j - 1] < number[j]) {
			temp = number[j - 1]; // swap
			number[j - 1] = number[j];
			number[j] = temp;
		}
	}
}

for (int i = 0; i < number.length; i++) {
	System.out.println("number[" + (i + 1) + "] = " + number[i]);
}

 

'IT > Java' 카테고리의 다른 글

Java Wrapper class  (0) 2020.02.13
Java 배열의 기초  (0) 2020.02.13
Java 계산기 만들기  (0) 2020.02.07
Java 반복문 기초  (0) 2020.02.07
Java String 문자열 기초  (0) 2019.11.28

댓글