/* shellsort.c; cpl3.5 */ #include #define MAXLINE 1000 int getline(char s[], int lim); void shellsort (char v[], int n); char line[MAXLINE]; main() { int len; while (len = getline(line, MAXLINE)) { shellsort(line, len-1); /* don't sort \n */ printf("%s",line); } } /* shellsort: sort v[0]...v[n-1] into increasing order */ void shellsort (char v[], int n) { int gap, i, j, temp; for (gap = n/2; gap > 0; gap /= 2) for (i = gap; i < n; i++) for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap) { temp = v[j]; v[j]= v[j+gap]; v[j+gap] = temp; } } /* getline: read a line into s, return length */ int getline(char s[], int lim) { int c, i; for (i=0; i