[C] 基数排序算法 →→→→→进入此内容的聊天室

来自 , 2020-07-17, 写在 C, 查看 112 次.
URL http://www.code666.cn/view/88a839f2
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /*首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中;
  5. 接下来将这些桶子中的数值重新串接起来;
  6. 接着再进行一次分配,这次是根据十位数来分配;
  7. 接下来将这些桶子中的数值重新串接起来。
  8. */
  9.  
  10. int main ( void )
  11. {
  12.         int data[10] = {73, 22, 93, 43, 55, 14, 28, 65, 39, 81};
  13.         int temp[10][10] = {0};
  14.         int order[10] = {0};
  15.         int i, j, k, n, lsd;
  16.         k = 0;
  17.         n = 1;
  18.         printf ( "\n排序前: " );
  19.         for ( i = 0; i < 10; i++ )
  20.                 printf ( "%d ", data[i] );
  21.         putchar ( '\n' );
  22.         while ( n <= 10 )
  23.         {
  24.                 for ( i = 0; i < 10; i++ )
  25.                 {
  26.                         lsd = ( ( data[i] / n ) % 10 );
  27.                         temp[lsd][order[lsd]] = data[i];
  28.                         order[lsd]++;
  29.                 }
  30.                 printf ( "\n重新排列: " );
  31.                 for ( i = 0; i < 10; i++ )
  32.                 {
  33.                         if ( order[i] != 0 )
  34.                                 for ( j = 0; j < order[i]; j++ )
  35.                                 {
  36.                                         data[k] = temp[i][j];
  37.                                         printf ( "%d ", data[k] );
  38.                                         k++;
  39.                                 }
  40.                         order[i] = 0;
  41.                 }
  42.                 n *= 10;
  43.                 k = 0;
  44.         }
  45.  
  46.         putchar ( '\n' );
  47.         printf ( "\n排序后: " );
  48.         for ( i = 0; i < 10; i++ )
  49.                 printf ( "%d ", data[i] );
  50.         return 0;
  51. }
  52.  

回复 "基数排序算法"

这儿你可以回复上面这条便签

captcha