반응형
버블 정렬( Bubble Sort )를 이용한 데이터 정렬하기
프로젝트를 하다가 Collections.sort()함수를 사용한 적이 있습니다.
갑자가 대학교 때 배웠던 버블 소트가 생각나서 작성해 보았습니다.
■ SOURCE
public static void main(String[] args) {
ArrayList<String> arrData = getData();
System.out.println( "전 : " + arrData );
for( int i = 0; i < arrData.size(); i ++ ) {
for( int k = 0; k < arrData.size() - 1; k ++ ) {
// 앞글자가 더 크면
if( arrData.get( k ).charAt( 0 ) > arrData.get( k + 1 ).charAt( 0 ) ) {
String strTmp = arrData.get( k );
arrData.set( k, arrData.get( k + 1 ) );
arrData.set( k + 1, strTmp );
}
}
}
System.out.println( "후 : " + arrData );
}
// Sample-Data
private static ArrayList<String> getData() {
ArrayList<String> arrData = new ArrayList<String>();
arrData.add( "C" ); arrData.add( "J" ); arrData.add( "Z" ); arrData.add( "S" ); arrData.add( "B" );
arrData.add( "A" ); arrData.add( "F" ); arrData.add( "C" ); arrData.add( "H" ); arrData.add( "M" );
return arrData;
}
버블 소트의 핵심(?) 로직은 딱 4줄인것 같습니다.
if( arrData.get( k ).charAt( 0 ) > arrData.get( k + 1 ).charAt( 0 ) ) {
String strTmp = arrData.get( k );
arrData.set( k, arrData.get( k + 1 ) );
arrData.set( k + 1, strTmp );
}
현재의 값과 다음 값을 비교하여, 현재값이 더 크면, 순서를 바꾸는 로직입니다.
① 현재값을 strTmp에 저장하고,
② 다음값을 현재 자리로 세팅하고,
③ strTmp에 저장한 현재값을 다음값의 자리에 세팅하면 됩니다.
참 쉽~죵?ㅋ
■ RESULT
전 : [C, J, Z, S, B, A, F, C, H, M]
후 : [A, B, C, C, F, H, J, M, S, Z]
※ 참고
- 링크 ☞ Collections.sort()를 이용하여 데이터(배열) 정렬하기
끝.
반응형
'Study > Java' 카테고리의 다른 글
진수 변환하기( 10진수, 2/8/16진수 ) (0) | 2021.03.04 |
---|---|
Java Exception : 예외처리 (0) | 2020.08.09 |
Collections.sort()를 이용하여 데이터(배열) 정렬하기 (0) | 2020.01.04 |
JDK( Java SE Development Kit ) 설치하기 (0) | 2020.01.01 |
[Java_File] 2차원배열 형태로 텍스트파일 읽기 (0) | 2019.12.21 |