반응형
알고리즘책에 있는 코드를 공부를 하다 처음보는 내용을 발견해 정리해본다.
static void shellSort(int[] a, int n) {
int h;
for (h = 1; h < n / 9; h = h * 3 + 1) // h의 초기값을 구한다.
;
for (; h > 0; h /= 3) {
for (int i = h; i < n; i++) {
int j;
int tmp = a[i];
for (j = i - h; j >= 0 && a[j] > tmp; j -= h) {
a[j + h] = a[j];
}
a[j + h] = tmp;
}
}
}
위 코드에서
for (h = 1; h < n / 9; h = h * 3 + 1)
;
이 부분을 처음 봤을때는 for문은 단순히 반목해서 무언가를 처리하는 함수가 아닐까 라고 생각 했었지만
조금 더 천천히 생각해보면 for문은 for(초기값; 반복조건; 증감식) 이므로 우리가 원하는 값은 결국
h = h * 3 + 1 이 부분으로 h 값을 변경 하는게 내용이다.
또한 밑에 세미콜론을 사용한건 비어있는 for문을 표현한 것이다.
반응형
'study > java' 카테고리의 다른 글
동기(sync) / 비동기(asyn) (0) | 2022.08.22 |
---|