웹개발 교육/Java

[30 ~ 31일] Java (14) - 정렬

ewok 2022. 9. 6. 18:39

정렬 방식

삽입 정렬 insertion sort

선택 정렬 selection sort

버블 정렬 bubble sort

 

선택 정렬 알고리즘

  9 8 7 6 5 -> 5 6 7 8 9 
 
  1) 첫 번째 자리와 나머지 자리 간의 비교
  9 8 7 6 5
  8 9 7 6 5
  7 9 8 6 5
  6 9 8 7 5
  5 9 8 7 6
  
  2) 두 번째 자리와 그 이후 나머지 자리 간의 비교 
  5 9 8 7 6
  5 8 9 7 6
  5 7 9 8 6
  5 6 9 8 7
  
  3) 세 번째 자리와 그 이후 나머지 자리 간의 비교
  5 6 9 8 7
  5 6 8 9 7
  5 6 7 9 8
  
  4) 네 번째 자리와 그 이후 나머지 자리 간의 비교
  5 6 7 9 8
  5 6 7 8 9

 

출처 : 네이버 부스트코스 모두를 위한 컴퓨터 과학 (CS50 2019)

 

 

버블 정렬

첫 번째 자리와 두 번째 자리의 숫자를 비교 한 후 작은 수를 앞으로 보낸다.

두 번째 자리와 세 번째 자리의 숫자를 비교 한 후 작은 수를 앞으로 보낸다.

계속 이 과정을 진행한다.

만약 정렬이 안되었을 경우 다시 처음부터 시작한다.

 

  9 8 7 6 5 -> 5 6 7 8 9
  
  8 9 7 6 5
  8 7 9 6 5
  8 7 6 9 5
  8 7 6 5 9
  
  7 8 6 5 9
  7 6 8 5 9
  7 6 5 8 9
  
  6 7 5 8 9
  6 5 7 8 9
  
  5 6 7 8 9

 

출처 : 네이버 부스트코스 모두를 위한 컴퓨터 과학 (CS50 2019)

 

 

 

int[] su= {9,8,7,6,5};


//selection sort
for(int a=0; a<su.length-1; a++) {
	for(int b=a+1; b<su.length; b++) {
		if(su[a]>su[b]) {    //오름차순
			int temp=su[a];
			su[a]=su[b];
			su[b]=temp;
		}//if end
	}//for end
}//for end


for(int idx=0; idx<su.length; idx++) {
	System.out.println(su[idx]);
}//for end

System.out.println("-------------");


//bubble sort
for(int a=3; a>=0; a--) {
	for(int b=0; b<=a; b++) {
		if(su[b]<su[b+1]) {   //내림차순
			int temp=su[b+1];
			su[b+1]=su[b];
			su[b]=temp;
		}//if end
	}//for end
}//for end
for(int idx=0; idx<su.length; idx++) {
	System.out.println(su[idx]);
}//for end