public static void main(String[] args) {
// 사용자로부터 n 개의 정수를 입력받은 후 오름차순으로 정렬(sort)하여 출력하는 코드
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] data = new int[n];
for(int i=0;i<n;i++) {
data[i] = sc.nextInt();
}
sc.close();
// 거품 정렬(Bubble Sort)
// data[0] ~ data[i] 중에서 최대값을 data[i] 위치로 몰아가는 일
for(int i=n-1;i>0;i--) { // 마지막 인덱스가 기준점
for(int j=0;j<i;j++) { // 첫번째부터 요소 비교
if(data[j] > data[j+1]) {
// swap 알고리즘
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
System.out.println("sort arr");
for(int i=0;i<n;i++) {
System.out.println(data[i]);
}
}
정렬에도 여러 종류가 있죠 이번에는 버블정렬을 알아볼까 합니다.
여기서 봐야할 부분은 바로 중간 부분입니다.
// data[0] ~ data[i] 중에서 최대값을 data[i] 위치로 몰아가는 일
for(int i=n-1;i>0;i--) { // 마지막 인덱스가 기준점
for(int j=0;j<i;j++) { // 첫번째부터 요소 비교
if(data[j] > data[j+1]) {
// swap 알고리즘
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
첫번째 for(int i=n-1;i>0;i--) 문은 마지막 인덱스를 기준점으로 하고 있습니다. 두번째 for(int j=0;j<i;j++) 문은 배열의 첫번째 요소부터 변화하는 기준점을 토대로 순차 탐색을 합니다.
중요한 조건문 안에 연산코드입니다. swap 즉, 배열안의 요소의 위치를 교환하는 가장 기초적인 방법입니다.
조건문에 만족하게되면 int 형 변수 temp에 현위치 번지(인덱스)안의 요소를 저장시키고 비교했던 다음 번지의 요소를 현위치 번지에 저장합니다. 기존 번지의 값은 temp에 저장되어 있으므로 다음 번지에 temp 안에있는 값을 저장시키면 요소들의 교환이 완료가 됩니다.