정렬된 숫자를 앞으로 보내보자. 그러면 앞의 숫자들은 정렬이 돼 있으므로 최선의 경우 정렬이 다 돼있다면 실행횟수는 0이다.
위에 적은 것은 pseudo code에 추가함.
pseudo code를 틀리게 짰는데, DESC로는 먹혔다. 그 이유는 뒤에서부터 앞으로 가는 방향으로 j를 탐색해야 했는데, 앞으로부터 뒤로 짜니까 뒤로 쭉 밀렸던 것.
for loop 하나면 되지 왜 2개가 필요한지 헷갈렸었다.
j가 0 1 2 3 4 가 필요한거 아닌가?
--> j 의 값이
0
01
012
0123
01234 이런식으로 필요하므로
i <- 0 to 5
j <- 0 to 5
i <- 0 to data.length
j <- i to 0
if data[j] data[j-1]
switch data[j] data[j-1]
package SortSeries;
public class InsertionSort {
public static void main(String args[]){
int[] data = {4,642,1123,24,532,12,56,7};
int[] result = insertDESC(data);
for(int i : result){
System.out.print(i + " ");
}
}
static int[] insertDESC(int data[]){
int temp;
for(int i=0;i<data.length;i++){
for(int j=0;j<i;j++){
if(data[j]<data[j+1]){
temp = data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
return data;
}
static int[] insertASC(int data[]){
int temp;
for(int i=0;i<data.length;i++){
for(int j=i;j>0;j--){
if(data[j]<data[j-1]){
temp = data[j];
data[j]=data[j-1];
data[j-1]=temp;
}
}
}
return data;
}
}