Lekcja 43 - posortowanie liczb od najmniejsze do największej
Ostatnio zmodyfikowano 2018-03-11 00:11
pekfos |
» 2018-02-21 15:40:42 minindeks jest niepotrzebnie skomplikowane w użyciu i implementacji, poza tym może być. |
|
marcinpro Temat założony przez niniejszego użytkownika |
» 2018-02-26 20:04:45 Powiem szczerze, że zastanawiałem się jak to uprościć i nie mam pomysłu. Jest jakiś sposób aby na wskaźnikach inaczej wyznaczyć na której pozycji jest najmniejszy element? |
|
YooSy |
» 2018-03-01 22:29:11 int * minindeks( int * begin, int * end )
{ int * tmp = begin; ++begin; while( begin != end ) { if( * begin < * tmp ) { tmp = begin; } begin++; } return tmp; } void sortuj( int * begin, int * end ) { while( begin != end ) { int * mine = minindeks( begin, end ); if( * begin != * mine ) swap( * begin, * mine ); begin++; } }
|
|
marcinpro Temat założony przez niniejszego użytkownika |
» 2018-03-02 09:09:38 Dzięki za przykład. Czyli wystarczyło stworzyć drugi wskaźnik, skopiować adres pierwszego elementu do niego i porównywać wartości. Znacznie łatwiejszy zapis. |
|
twoxu |
» 2018-03-11 00:11:45 Może i jest to klepanie się po plecach, które bynajmniej nie pomaga OP, ale stworzyłem jeszcze krótszy zapis. #include <iostream> void sortuj( int * begin, int * end ) { while( begin != end ) { int mn = 0; int * b = begin; while( b != end ) { if( * b > mn ) std::swap( * b, mn ); b++; } if( * begin <= mn ) * begin = mn; begin++; } } void wypisz( int * begin, int size ) { while( size > 0 ) { std::cout << * begin << ' '; ++begin; --size; } } int main() { int tab[ 10 ] = { 0, 9, 1, 3, 8, 2, 6, 7, 5, 4 }; sortuj( tab, tab + 10 ); wypisz( tab, 10 ); }
|
|
1 « 2 » |