C ++の実装ビーズソート

1の#include <stdio.hの>
 2の#include < ストリング・H>
 3  使用して 名前空間STDを、 
4    
5  の#define BEAD(i、j)のビーズは[iが最大+ jを*] 
 6    
7  // 上記のアルゴリズムを実行する機能
8  空隙 beadSort(INT *、INT LEN) 
 9  { 
 10      // 最大の要素を探す
11      INTを maxは= [ 0 ]。 
12      のためのINTは私= 1 ; I <LEN; I ++ 13         もし([I]> MAX) 
 14             最大値= [I]。 
15    
16      // 分配内存
17個の      符号なしchar型のビーズ[マックス* LEN]。 
18      のmemset(ビーズ、0はsizeof (ビーズ))。 
19    
20      // 摆珠子
21      のためにINT iが= 0 ; I <LEN; I ++ 22          のためのINT J = 0 ; J <[I]; J ++ 23              BEAD(i、j)は= 1 24    
25     INT = J 0、J <マックス; J ++ 26である     { 
 27          // 各ポスト上にあるどのように多くのビーズCOUNT 
28          INT SUM = 0 ; 
 29          INT Iは= 0 ; I <lenは、I ++ 30          {  
 31は              SUM = + ビーズ(I、J); 
 32              BEAD(I、J)= 0 ; 
 33である         } //各列の統計的な高さ 
 34である       
35個の         // ビーズが自由落下
36の         ためのINT;サム-私はLENを= 私は<lenは、I ++ 37              BEAD(I、J)= 1 //私层J列摆珠子
 38      } 
 39    
40      // 入れビーズ使用して、配列内の値ソート
41      INTを iは= 0 ; I <LEN; I ++ 42      { 
 43          INT J。 
44          のための(j = 0 ; J <最大&& BEAD(I、J); J ++ )。 
45    
46          A [I] = J。 
47      } 
 48  } 
 49    
50  //ドライバ関数アルゴリズムをテストするために
51  INT メインを() 
 52  { 
 53      のint [] = { 531741120 }。 
54      INT LEN = はsizeof()/ はsizeof([ 0 ])。 
55    
56      beadSort(LEN)。 
57    
58      のためにINTは私= 0 ; I <LEN; I ++ 59          のprintf("%のD 、[I]); 
 60    
61      リターン 0 ; 
 62 }

 

memsetを

1の#include <iostreamの>
 2の#include <CStringの>
 3   
4  INT ()メイン
 5  {
 6      INT [ 20 ]。
7      のstd ::のmemset(0はsizeof A)。
8      intは愛:A)はstd :: coutの<< 愛<< "「;
9 } // 20 * 0
1  / * memsetの例* / 
2の#include <stdio.hの>
 3の#include < 文字列・H>
 4  
5  INT メイン()
 6  {
 7    チャー STR [] = " ほぼすべてのプログラマは、memsetを知っている必要があります!" 8    のmemset(STR、' - '6 )。
9つの   プット(STR)。
10    リターン 0 ;
11  }
 12  // 出力
 13  // ------すべてのプログラマはmemsetのを知っている必要があります!

ビーズソート理論基準

https://www.cnblogs.com/kkun/archive/2011/11/23/2260301.html

おすすめ

転載: www.cnblogs.com/chenguifeng/p/11894815.html