STLASYK by iijima vf̃\[g(1) sort, stable_sort / list::sort STLł͂̃\[g̃ASYD ł́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ɓKpWZq̏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'͎ɂOW̔茋ʂԂ̂ŁC std::stringIuWFNgvfƂRNVsortKpꍇ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.
!doctype>