MY IT

Shell 정렬

메롱씨티 배드맨 2006. 4. 14. 01:21

#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