Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

MergeSort lista jednokierunkowa iteracyjnie

Ostatnio zmodyfikowano 2015-04-24 22:32
Autor Wiadomość
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.
P-131229
darko202
» 2015-04-21 08:20:00
P-131239
kam51
Temat założony przez niniejszego użytkownika
» 2015-04-24 14:45:47
NIE REKURENCYJNIE....
P-131368
Admixior
» 2015-04-24 22:13:29
Powinno działać:

C/C++
#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;
}
P-131390
pekfos
» 2015-04-24 22:32:27
P-131392
« 1 »
  Strona 1 z 1