2012年4月18日水曜日


 STLASYK by iijima  vf̃\[g(1) sort, stable_sort / list::sort  STLł͂‚̃\[g̃ASY񋟂D ł́Csort  stable_sort Ƃ肠D  ֐vg^CvF  void sort( RandomAccessIterator beg, RandomAccessIterator end ); void sort( RandomAccessIterator beg, RandomAccessIterator end, BinaryFunc op );  void stable_sort( RandomAccessIterator beg, RandomAccessIterator end ); void stable_sort( RandomAccessIterator beg, RandomAccessIterator end, BinaryFunc op );  [beg, endj͈̗̔͂vfŕԂ悤Ƀ\[gD  1Ԗڂ̌`̃\[g̊'< Zq'łD "< Zq"trueԂꍇ̍Eӂ̊֌WCӂEӂuvƌȂ΁C\[g͈͂ vfuvɐ񂵂̂ƂȂD  ̐͌Ƃ͌ȂDC++ł̓NX̃IuWFNgɓKp֌WZq̏e̓[U[`ł邽߁C   "< Zq"KIuWFNǵu召֌Wv𔻒肷̂łƂ͌Ȃ炾D   ɂ́C\[g͈͂́C͈͓̔̔Cӂ2vfɂ‚āCV[PXɂ鑊ΓÎ̂ӁC   Ô̂EӂƂƂ'< Zq'̉Zʂ false ł悤ȏԂɂȂCƌׂ낤D  2Ԗڂ̌`ł́C3ɓn2q֐Ƃă\[gD Ō2q֐Ƃ́C1Ƒ2̊֌W̔茋ʂboollŕԂ֐܂͊֐IuWFNĝƁD sortstable_sorẗႢ͎̂ƂD  sort          ϓIn~log(n)̕Gۏ؂D               vf̑ΓIۂ邱Ƃ͕ۏ؂ȂD  stable_sort   n~log(n)̕Giɏ\ȋ󂫗eʂȂꍇn~log(n)~log(n)j               vf̑ΓI͕ۂD  ȉ̃Tvłsort֐̂ݗp邪C List 1`4, 6ɂ‚ẮC"sort""stable_sort"ɒuĂʂD  yPzftHg̃\[g yQz\[g̐ݒ`O`2q֐ yRz\[g̐ݒ`[U[`2q֐ y  zXg̃\[g   yPzftHg̃\[g  \[g֐̃ftHg̃\[g'< Zq'łD RNV̗vfgݍ݃f[^^̏ꍇ͏il̏ȏjŃ\[gD  // List 1 #include  #include  #include   int main() {     std::vector< int > seq;     for( int i = 0; i < 10; ++i ){         seq.push_back( i );     }     std::random_shuffle( seq.begin(), seq.end() );      std::cout << "\[gOF";     std::copy( seq.begin(), seq.end(), std::ostream_iterator< int >( std::cout, " " ) );     std::cout << std::endl;      std::sort( seq.begin(), seq.end() );      std::cout << "\[gF";     std::copy( seq.begin(), seq.end(), std::ostream_iterator< int >( std::cout, " " ) );     std::cout << std::endl; }  s()F \[gOF8 1 9 2 0 5 7 3 4 6 \[gF0 1 2 3 4 5 6 7 8 9   RNV̗vf̃f[^^NX̏ꍇCYNX̃IuWFNgԂ̊֌W𔻒肷'< Zq'`Ă΁C Ƃă\[gD Ⴆ΁Cstd::stringIuWFNg𗼕ӂƂ'< Zq'͎ɂO֌W̔茋ʂԂ̂ŁC std::stringIuWFNgvfƂRNVsort֐KpꍇCŃ\[g邱ƂɂȂD  // List 2 #include  #include  #include  #include   const char* STATIONS[] = { "Ueno", "Nippori", "Kitasenju", "Matsudo", "Kashiwa", "Abiko", "Toride" };  int main() {     std::vector< std::string > stations;     for( size_t i = 0; i < sizeof( STATIONS ) / sizeof( char* ); ++i ){         stations.push_back( std::string( STATIONS[i] ) );     }      std::cout << "\[gOF";     std::copy( stations.begin(), stations.
PRXファイルの添え字は何ですか
end(), std::ostream_iterator< std::string >( std::cout, " " ) ); std::cout << std::endl; std::sort( stations.begin(), stations.end() ); std::cout << "\[gF"; std::copy( stations.begin(), stations.end(), std::ostream_iterator< std::string >( std::cout, " " ) ); std::cout << std::endl; } sʁF \[gOFUeno Nippori Kitasenju Matsudo Kashiwa Abiko Toride \[gFAbiko Kashiwa Kitasenju Matsudo Nippori Toride Ueno yQz\[g̐ݒ`O`2q֐ \[g'< Zq'ȊOƂꍇ́C\[g֐2Ԗڂ̌`pC 3Ƀ\[gƂ2q֐nD STLwb_ɂ͂‚2q֐炩ߒ`ĂD ̂C\[g̊ƂẮCstd::less, std::greater悭gD std::less̏e'< Zq'C‚܂CftHg̃\[głC std::greateȑe'> Zq'łD List 1, 2 ɂ‚āC\[g'> Zq'ɕύXD // List 3 #include #include #include #include int main() { std::vector< int > seq; for( int i = 0; i < 10; ++i ){ seq.push_back( i ); } std::random_shuffle( seq.begin(), seq.end() ); std::cout << "\[gOF"; std::copy( seq.begin(), seq.end(), std::ostream_iterator< int >( std::cout, " " ) ); std::cout << std::endl; std::sort( seq.begin(), seq.end(), std::greater< int >() ); std::cout << "\[gF"; std::copy( seq.begin(), seq.end(), std::ostream_iterator< int >( std::cout, " " ) ); std::cout << std::endl; } s()F \[gOF8 1 9 2 0 5 7 3 4 6 \[gF9 8 7 6 5 4 3 2 1 0 // List 4 #include #include #include #include #include const char* STATIONS[] = { "Ueno", "Nippori", "Kitasenju", "Matsudo", "Kashiwa", "Abiko", "Toride" }; int main() { std::vector< std::string > stations; for( size_t i = 0; i < sizeof( STATIONS ) / sizeof( char* ); ++i ){ stations.push_back( std::string( STATIONS[i] ) ); } std::cout << "\[gOF"; std::copy( stations.begin(), stations.end(), std::ostream_iterator< std::string >( std::cout, " " ) ); std::cout << std::endl; std::sort( stations.begin(), stations.end(), std::greater< std::string >() ); std::cout << "\[gF"; std::copy( stations.begin(), stations.
メッシュ内のどのようなメリット、バス、リング、スタートポロジ
end(), std::ostream_iterator< std::string >( std::cout, " " ) ); std::cout << std::endl; } sʁF \[gOFUeno Nippori Kitasenju Matsudo Kashiwa Abiko Toride \[gFUeno Toride Nippori Matsudo Kitasenju Kashiwa Abiko yRz\[g̐ݒ`[U[`2q֐ O`2q֐Œ񋟂֌WZȊÕ\[gݒ肷ɂ́C 2q֐[U[`D ̕ȕvŃ\[gD sort̏ꍇC̗vf̑ΓIۂ邱Ƃ͕ۏ؂ȂD ̗vf̑ΓIۂƂ́Cstable_sortpD // List 5 #include #include #include #include class StringSizeLess { public: bool operator()( const std::string& lhs, const std::string& rhs ) const { return lhs.size() < rhs.size(); } }; const char* CITIES[] = { "Sapporo", "Sendai", "Saitama", "Chiba", "Kawasaki", "Yokohama", "Nagoya", "Kyoto", "Osaka", "Kobe", "Hiroshima", "Kitakyushu", "Fukuoka", }; int main() { std::vector< std::string > cities; for( size_t i = 0; i < sizeof( CITIES ) / sizeof( char* ); ++i ){ cities.push_back( std::string( CITIES[i] ) ); } std::sort( cities.begin(), cities.end(), StringSizeLess() ); std::copy( cities.begin(), cities.end(), std::ostream_iterator< std::string >( std::cout, "\n" ) ); } sʁF Kobe Chiba Kyoto Osaka Sendai Nagoya Sapporo Saitama Fukuoka Kawasaki Yokohama Hiroshima Kitakyushu RNV܂܂ȊŃ\[gɂ́CeɑΉ2q֐`D // List 6 #include #include #include #include #include #include class City { int id_; // ID std::string name_; // ss int population_; // l(l) public: City( int id, std::string name, int population ) : id_(id), name_(name), population_(population){} int id() const { return id_; } std::string name() const { return name_; } int population() const { return population_; } }; // ID̏\[gp std::less̏eiftHg̃\[gj bool operator < ( const City& lhs, const City& rhs ) { return lhs.id() < rhs.id(); } // ID̍~\[gp std::greateȑe bool operator > ( const City& lhs, const City& rhs ) { return lhs.id() > rhs.id(); } // ss̎\[gp struct CityNameLess { bool operator()( const City& lhs, const City& rhs ) const { return lhs.name() < rhs.name(); } }; // l̏\[gp struct CityPopulationLess { bool operator()( const City& lhs, const City& rhs ) const { return lhs.population() < rhs.population(); } }; // o͗p std::ostream& operator << ( std::ostream& os, const City& city ) { return os << std::setw( 2 ) << std::setfill( '0' ) << city.
ネットワークのプロトコルの目的は何ですか
id() << " : " << std::setw( 12 ) << std::setfill( ' ' ) << std::left << city.name() << std::setw( 5 ) << std::right << city.population() << " l"; } // f[^ const char* CITIES[] = { "Sapporo", "Sendai", "Saitama", "Chiba", "Kawasaki", "Yokohama", "Nagoya", "Kyoto", "Osaka", "Kobe", "Hiroshima", "Kitakyushu", "Fukuoka", }; const int POPULATION[] = { 185, 102, 105, 91, 129, 352, 219, 147, 262, 151, 113, 100, 137 }; int main() { std::vector< City > cities; for( int i = 0; i < sizeof( CITIES ) / sizeof( char* ); ++i ){ cities.push_back( City( i + 1, std::string( CITIES[i] ), POPULATION[i] ) ); } std::cout << "ID̍~ : \n"; std::sort( cities.begin(), cities.end(), std::greater< City >() ); std::copy( cities.begin(), cities.end(), std::ostream_iterator< City >( std::cout, "\n" ) ); std::cout << std::endl; std::cout << "ss̎ : \n"; std::sort( cities.begin(), cities.end(), CityNameLess() ); std::copy( cities.begin(), cities.end(), std::ostream_iterator< City >( std::cout, "\n" ) ); std::cout << std::endl; std::cout << "l̏ : \n"; std::sort( cities.begin(), cities.end(), CityPopulationLess() ); std::copy( cities.begin(), cities.end(), std::ostream_iterator< City >( std::cout, "\n" ) ); std::cout << std::endl; std::cout << "ID̏(ftHg) : \n"; std::sort( cities.begin(), cities.end() ); std::copy( cities.begin(), cities.
end(), std::ostream_iterator< City >( std::cout, "\n" ) ); } sʁF ID̍~ : 13 : Fukuoka 137 l 12 : Kitakyushu 100 l 11 : Hiroshima 113 l 10 : Kobe 151 l 09 : Osaka 262 l 08 : Kyoto 147 l 07 : Nagoya 219 l 06 : Yokohama 352 l 05 : Kawasaki 129 l 04 : Chiba 91 l 03 : Saitama 105 l 02 : Sendai 102 l 01 : Sapporo 185 l ss̎ : 04 : Chiba 91 l 13 : Fukuoka 137 l 11 : Hiroshima 113 l 05 : Kawasaki 129 l 12 : Kitakyushu 100 l 10 : Kobe 151 l 08 : Kyoto 147 l 07 : Nagoya 219 l 09 : Osaka 262 l 03 : Saitama 105 l 01 : Sapporo 185 l 02 : Sendai 102 l 06 : Yokohama 352 l l̏ : 04 : Chiba 91 l 12 : Kitakyushu 100 l 02 : Sendai 102 l 03 : Saitama 105 l 11 : Hiroshima 113 l 05 : Kawasaki 129 l 13 : Fukuoka 137 l 08 : Kyoto 147 l 10 : Kobe 151 l 01 : Sapporo 185 l 07 : Nagoya 219 l 09 : Osaka 262 l 06 : Yokohama 352 l ID̏(ftHg) : 01 : Sapporo 185 l 02 : Sendai 102 l 03 : Saitama 105 l 04 : Chiba 91 l 05 : Kawasaki 129 l 06 : Yokohama 352 l 07 : Nagoya 219 l 08 : Kyoto 147 l 09 : Osaka 262 l 10 : Kobe 151 l 11 : Hiroshima 113 l 12 : Kitakyushu 100 l 13 : Fukuoka 137 l y zXg̃\[g list< T >Rei̓_ANZXqȂ̂ŁCL\[g֐͓KpłȂD list< T >Rei\[gɂ́Clist̃o֐sortgȂ΂ȂȂD void list< T >::sort(); void list< T >::sort( BinaryFunc op ); 1Ԗڂ̌`̃\[g̊'< Zq'łD 2Ԗڂ̌`ł́Cɓn2q֐Ƃă\[gD vf̑ΓI͕ۂiOqsort֐ƈقȂjD // List 7 #include #include #include #include #include int main() { std::vector< int > coll1; for( int i = 0; i < 10; ++i ){ coll1.push_back( i ); } std::random_shuffle( coll1.begin(), coll1.end() ); // listRei std::list< int > coll2( coll1.begin(), coll1.end() ); std::cout << "\[gOF"; std::copy( coll2.begin(), coll2.end(), std::ostream_iterator< int >( std::cout, " " ) ); std::cout << std::endl; // std::sort( coll2.begin(), coll2.end() ); // coll2listReiȂ̂error coll2.sort(); // ok : iftHgjŃ\[g std::cout << " F"; std::copy( coll2.begin(), coll2.end(), std::ostream_iterator< int >( std::cout, " " ) ); std::cout << std::endl; coll2.sort( std::greater< int >() ); // ~Ń\[g std::cout << "~ F"; std::copy( coll2.begin(), coll2.

These are our most popular posts:

因数分解の算法(その13)

... には変数を順次消去することによって計算できるはずだが,それを馬鹿正直に実行 するとたちまち大きな係数をもつ高次方程式が現れ ... 一般の連立代数方程式を解く ためにはガウスの消去法が使える形(三角化)に直すかあるいは1変数のみの関数に 直すことがカギになる.そのための有効な手段として注目されているのが「グレブナー 基底」を構成するブーフバーガーのアルゴリズムである. ... 便宜上,変数にa>b>c(> 1)と順序をつけ,単項式a^pb^qc^rについては指数の列(p,q,r)に辞書式順序をつける( 単純辞書式 ... read more

グレブナー基底

ところで、グレブナー基底を計算するには、ブッフベルガーの判定法というものが知られ ていて、しかも有限回の操作で終わることから、計算機を用いた探究が始まったようだ。 ただし、有限回の .... 読者のために、練習問題を一つ置いておこう。 練習問題 対称式 ... 解) 項は全部で、 3H5=7C5=21 個ある。 ... 辞書式順序、全次数順序ともに、別の項 を掛けても順序が逆転しないという「良い」性質を持っている。 ..... コメント) 割り算の アルゴリズムに従って割り算を実行しましたが、計算は単純といえども 結構大変ですね 。 read more

ブロックソート - Wikipedia

2 アルゴリズム; 3 圧縮のための後処理; 4 外部リンク. [編集] 原理. 長さ n のデータを 巡回シフトし、得られるすべての文字列を辞書順にソートする。このようにしてできた ... A , B, C, D, E. 1, c, a, c, a, o. 2, o, c, a, c, a. 3, a, o, c, a, c. 4, c, a, o, c, a. 5, a, c, a, o, c ... read more

C 言語入門 II

ポインタはメモリー上に連続して配置されているデータにアクセスするための基本的な 方法で、この意味においては配列と同一視 ... なおソートそれ自身に関しては C 言語に 組み込まれている quick sort を使用しており、ソートに関しての効率的なアルゴリズムに ... 但し、p の値はプログラムの実行状態に依存しています。 ポインターは何重にもする ことができ、次のようにすることもできます。 ptr2.c .... 辞書式順序. アルファベットの集合 . S = {a, b, c, d, ..., x, y, z}. には (アスキー) コードによって順序が与えられている : a b c ... read more

Related Posts



0 コメント:

コメントを投稿