/* selection-sort-recursive.c */ #include #define N 100 void selection(int a[],int n); void swap(int x, int y, int a[]); void r_select(int a[], int n, int c); //void r_select(int a[], int c); int main(void) { int n,i,a[N]; n = 0; while(scanf("%d",&a[n]) != EOF) n++; r_select(a, n, n); for(i = 0;i < n;i++) printf("%d ",a[i]); printf("\n"); return 0; } void r_r(int a[], int min, int i, int j) { if (a[j-1] < a[min]){ min = j-1; } swap(min, i-1, a); if (j == i){ return; } else { r_r(a, min, i, j-1); } } void r_select(int a[], int n, int i) { int min; if ( i == 0 ) { return; } else { r_select(a, n, i - 1); min = i - 1; r_r(a, min, i, n); } } void swap(int x, int y, int a[]) { int tmp; tmp = a[x]; a[x] = a[y]; a[y] = tmp; }