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(); - 스캐너를 닫아주는 명령어