인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

3. 삽입정렬

삽입정렬에 관해 질문있습니다.

작성

·

261

0

강사님의 강의를 듣기 전



import java.util.Scanner;

public class Main{
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i =0; i < n ; i++){
arr[i] = kb.nextInt();
}
int a;
for(int i = 1; i< n; i++){
a = i;
for(int j = i-1; j >= 0; j--){
if(arr[a] < arr[j]){
int tmp = arr[j];
arr[j] = arr[a];
arr[a] = tmp;
}
a--;

}
}
for(int i =0; i < n ; i++){
System.out.print(arr[i] + " ");
}
}
}

이렇게 코드를 짰었는데 제가 짠 코드도 삽입정렬이라 할 수 있는
것 인가요?

답변 1

0

김동현님의 프로필 이미지
김동현
질문자

위 문제에 이어서 추가적으로 복습을 하던 중 위에 코드와 다르게 다시 짜보았을 때 



import java.util.Scanner;

public class Main{
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int input = kb.nextInt();
int[] arr = new int[input];
for(int i =0; i < input ; i++){
arr[i] = kb.nextInt();
}
int tmp;
for(int i =1; i < input; i++){
tmp = arr[i];
for(int j = i-1; j >= 0; j--){
if(arr[j] > tmp){
arr[j+1] = arr[j];
}
else
break;
arr[j] = tmp;
}
}
for(int i =0; i < input; i++){
System.out.print(arr[i] + " ");
}
}
}

이렇게 짜서 arr[j+1]에 대입하는 것이 아닌 arr[j]에다 대입
하였는데 상관없나요??

두 코드 다 리뷰 부탁드립니다 ㅠㅠ