Computer Language/JAVA

014 - 거품정렬(bubbleSort)

차뉴라빠 2018. 5. 4. 10:27

정렬의 종류는 삽입정렬 선택정렬 버블정렬 등이 있고 검색하다보니 다른 정렬방법도 많이 있는 것 같다.



import java.util.Scanner;//스캐너 호출명령어
//import java.util.*;도 가능
public class chanyurappa {

public static void main(String args[]) {//메인
int A[] = new int[10];
Scanner sc = new Scanner(System.in);

for(int i=0; i<A.length; i++)//배열값 입력
{
A[i] = sc.nextInt();
}
sc.close();//스캐너 닫기

bubbleSort(A);//A를 넘겨줌
//
for(int i=0; i<A.length; i++)//출력
{
System.out.print(A[i]+" ");
}
}
//메소드
static void bubbleSort(int A[])//A[]를 받아옴
{
for(int i=A.length; i>=0; i--)//오름차순정렬
{
for(int j=0; j<A.length-1; j++)
{
if(A[j]>A[j+1])
{
int temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
}
}



저번에는 static 변수를 만들어서 class 전체에서 사용가능하게 했었는데

이번에는 Main메소드 안에서 변수를 생성하고 bubbleSort 메소드를 실행할 때 인수로 A를 넘겨줬다.


temp는 임시저장 혹은 쓰레기값들을 처리하는 변수로 많이 사용한다고 하는데 bubbleSort 메소드에서만 사용할 변수라서 밑에서 생성했다.


여기서 제일 이해가 필요한 부분이 이부분인데

int temp = A[j]; 

A[j] = A[j+1]; 

A[j+1] = temp;

바로 옆에 있는 배열과 비교해서 큰 수를 오른쪽으로 보내는 방법(?)이다.

A[0] 과 A[1]을 비교해서 A[0]이 크면

A[j]을 temp 에 넣고

A[j+1]을 A[j]에 넣고

temp를 A[j+1]에 넣는다.

temp에 잠시 빼두었다가 옆칸으로 옮기고 나서

빈 자리에 temp를 넣는다는 얘기다.


sc.close(); - 스캐너를 닫아주는 명령어