기수정렬 잘안됩니다 도와주세요!!!
글쓴이: nayana / 작성시간: 목, 2004/05/13 - 9:43오전
#include <stdio.h> #define N 100 unsigned bits( unsigned x, int k, int j ); void radix_exchange_sort( int a[], int n, int b ); int main ( void ) { int i, n, score[N]; printf("Number of data?\t"); scanf("%d", &n); for ( i = 0; i < n; i++ ) { printf("score[%d] = ", i ); scanf("%d", &score[i]); } radix_exchange_sort( score, n, 31 ); for ( i = 0; i < n; i++ ) printf("(%d)\t %d\n", i + 1, score[i]); return 0; } unsigned bits( unsigned x, int k, int j ) { return ( x >> k ) & ~( ~0 << j ); } void radix_exchange_sort( int a[], int n, int b ) { int t, i, j; if ( n > 1 && b >= 0 )/*!종료조건*/ { i = 0; /* i는 첫 레코드*/ j = n - 1;/* j는 마지막 레코드*/ while( 1 )/*분할*/ { while ( bits( a[i], b, 1 ) == 0 && i < j ) i++;/*검색*/ while ( bits( a[j], b, 1 ) == 0 && i < j ) j--; if( i >= j ) break;/*i 와 j 가 같아지면 끝이다.*/ t = a[i];/* i 와 j 요소를 교환한다.*/ a[i] = a[j]; a[j] = t; } if ( bits( a[n - 1], b, 1 ) == 0 ) j++;/* 리스트가 모두 0인경우*/ radix_exchange_sort( a, j, b - 1 ); /* 다음 비트와 분할에 대해 재귀*/ radix_exchange_sort( a + j, n - j, b - 1 ); } }
책을 보면서 따라하기식으로 알고리즘을 공부하고 있는데...
잘안되네요....무엇이 문제인지...감이 잘안잡힙니다..
무지해서...질문만 올리게 됩니다.
Forums:
댓글 달기