MergeSort lista jednokierunkowa iteracyjnie
Ostatnio zmodyfikowano 2015-04-24 22:32
kam51 Temat założony przez niniejszego użytkownika |
MergeSort lista jednokierunkowa iteracyjnie » 2015-04-20 20:28:13 Witam, poszukuję algorytmu na sortowanie przez scalanie listy jednokierunkowej, ale nie rekurencyjne. Nie mogę znaleźć nigdzie czegoś takiego w internecie więc pytam tutaj. |
|
darko202 |
» 2015-04-21 08:20:00 |
|
kam51 Temat założony przez niniejszego użytkownika |
» 2015-04-24 14:45:47 NIE REKURENCYJNIE.... |
|
Admixior |
» 2015-04-24 22:13:29 Powinno działać: #include <iostream>
using namespace std;
int main() { int * uno, * dos, * tres, x = 1, size = 10; uno = new int[ size ]; dos = new int[ size ]; for( int i = 0; i < size; i++ ) { cin >> uno[ i ]; } do { x *= 2; for( int s = 0; s < size; s += x ) { int p = 0, q = x / 2; for( int i = 0; i < x &&( s + i ) < size; i++ ) { if( p == x / 2 ) dos[ s + i ] = uno[ q++ + s ]; else if( q == x || q + s >= size ) dos[ s + i ] = uno[ p++ + s ]; else if( uno[ p + s ] < uno[ q + s ] ) dos[ s + i ] = uno[ p++ + s ]; else dos[ s + i ] = uno[ q++ + s ]; } } tres = uno; uno = dos; dos = tres; } while( x < size ); for( int i = 0; i < size; i++ ) { cout << uno[ i ]; } return 0; }
|
|
pekfos |
» 2015-04-24 22:32:27 |
|
« 1 » |