//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
-~----------~----~----~----~------~----~------~--~---

Reply via email to