Sorting digits of an integer

前端 未结 9 1296
日久生厌
日久生厌 2020-12-16 01:26

You are given an integer 51234 (say) we need to sort the digits of a number the output will be 12345.

How to do it without using array ?

9条回答
  •  余生分开走
    2020-12-16 02:15

    You can use a loop and % 10 to extract each digit. An outer loop from 0 to 9 could be used to test if the digit exists. If it exists, print it.

    In pseudo code:

    n = integer // 51234
    FOR digit = 0 TO 9
      temp = n
      REPEAT
        IF temp % 10 = digit THEN PRINT digit
        temp /= 10
      UNTIL temp = 0
    

    Edit: This test in gcc shows that it handles zeros and repeated digits:

    $ cat sortdigits.c
    #include 
    main () {
     int n,digit,temp;
     n = 43042025;
     for (digit=0;digit<9;digit++)
       for (temp=n;temp>0;temp/=10)
         if (temp%10==digit) printf("%d",digit);
     printf("\n");
    }
    $ ./sortdigits
    00223445
    

提交回复
热议问题