//this code seems works well int f(int input) { int ret = -1; char p[ 16 ]; memset(p,0,16); itoa( input, p, 10 );
int len = strlen( p ); char *end = p + len; char *start = end - 1; char flag = (char)('0' - 1); while ( start >= p ) { char *largest = &flag; for ( char *it = start; it < end; it++ ) { if( *it < *start && *it > *largest ) { largest = it; } } if ( largest != &flag ) { *largest ^= *start; *start ^= *largest; *largest ^= *start; // sort [start + 1, end) descendent, use your own sort algorithm return atoi(p); } start--; } return ret; } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/algogeeks -~----------~----~----~----~------~----~------~--~---