JAVA/문제풀이
삽입정렬 코드 및 디버깅표
nsh95
2023. 11. 28. 21:38
package class01;
public class Test01 {
public static void main(String[] args) {
int[] arr = new int[5];
arr[0]=100;
arr[1]=5;
arr[2]=60;
arr[3]=1000;
arr[4]=30;
for (int i = 1; i < arr.length; i++) { // 정렬 횟수를 의미
int pivot = arr[i]; //pivot (기준)
for(int j=i-1; j>-1; j--) {
// for(int j= 기준왼쪽부터; j>=0; j--){}
// 비교값이 기준값보다 크다면?
// 비교값을 한칸 뒤로 이동시킨다
// 그리고 기존 비교값이 있던 자리에 기준 값을 넣는다
if(arr[j]>pivot) {
arr[j+1]=arr[j];
arr[j]=pivot;
//[5,100,60,1000,30] 1회전
//[5,60,100,1000,30] 2회전
//[5,60,100,30,1000] 3회전
//[5,60,30,100,1000] 4회전
//[5,30,60,100,1000] 5회전
}
}
}for(int a:arr) {
System.out.print(" "+a);
}
}
}
코드에 따른 삽입정렬 디버깅표
i | i<5 | j | j>-1 | arr[j]>pivot |
1 | T | 0 | T | 100>5 T |
-1 | F | |||
2 | T | 1 | T | 100>60 F |
0 | T | 5>60 F | ||
-1 | F | |||
3 | T | 2 | T | 100> 1000 F |
1 | T | 60>1000 F | ||
0 | T | 5>1000 F | ||
-1 | F | |||
4 | T | 3 | T | 1000>30 T |
2 | T | 100>30 T | ||
1 | T | 60>30 T | ||
0 | T | 5>30 F | ||
-1 | F |