#include <stdio.h>
#include <math.h>
#define N 100 /* 데이터 수 */
int main( void )
{
....int a[N], i, j, gap, t;
..../* 난수 N개 */
....for( i = 0; i < N; i++ ) a[i] = rand() % 32767;
..../* N 보다작은 범위에서 최대의 gap을 결정한다 */
....for( gap = 1; gap < N; gap = 3 * gap+1 );
....while( gap > 0 )
....{
........for( i = gap; i < N; i = i++ )
........{
............for( j = i - gap; j >= 0; j = j - gap )
............{
................if ( a[j] > a[j+gap])
................{
....................t = a[j];
....................a[j] = a[j + gap];
....................a[j + gap] = t;
................}else{
....................break;
................}
............}
........}
....
......../* gap 을 1/3로 줄인다 */
........gap = gap / 3;
....}
..../* 정렬 내용을 보여준다 */
....for( i = 0; i < N; i++ )
....{
........printf("%8d", a[i]);
........if( i % 10 == 9 ) printf("\n");
....}
....return 0;
}
'MY IT' 카테고리의 다른 글
프로세서 정보 얻기 (0) | 2006.05.23 |
---|---|
바이러스 (0) | 2006.05.01 |
패킷 판단 (0) | 2006.04.11 |
calloc으로 2차원 배열 만들기 (0) | 2006.04.11 |
할당된 메모리 용량 (0) | 2006.04.11 |