Algorytm merge-sort
Ostatnio zmodyfikowano 2017-05-13 10:49
natofp Temat założony przez niniejszego użytkownika |
Algorytm merge-sort » 2017-05-12 21:44:24 Witam, npisalem algorytm sorujacy matoda podzialu i rekurencji, jednak nie sortuje on danych poprawnie. Czy ktos moglby wskazac gdzie jest blad? Oto program: #include <iostream> #include <cmath> #include <cstdlib> using namespace std;
void mergesort( int A[], int p, int q, int r ) { int n1 = q - p + 1; int n2 = r - q; int L[ n1 + 1 ]; int R[ n2 + 1 ]; for( int i = 0; i < n1; i++ ) { L[ i ] = A[ p + i ]; } for( int j = 0; j < n2; j++ ) { R[ j ] = A[ q + j + 1 ]; } L[ n1 + 1 ] =( 1 >> 31 ); R[ n2 + 1 ] =( 1 >> 31 ); int i = 0; int j = 0; for( int k = p; k <= r; k++ ) { if( L[ i ] <= R[ j ] ) { A[ k ] = L[ i ]; i++; } else { A[ k ] = R[ j ]; j++; } } } void bigmergegsort( int A[], int p, int r ) { if( p < r ) { int q =( p + r ) / 2; bigmergegsort( A, p, q ); bigmergegsort( A, q + 1, r ); mergesort( A, p, q, r ); } }
int main() { int A[ 100 ]; srand( 1 ); for( int i = 0; i < 100; i++ ) { A[ i ] = rand() % 100 + 1; } bigmergegsort( A, 0, 99 ); for( int i = 0; i < 100; i++ ) { cout << A[ i ] << endl; _sleep( 50 ); } return 0; }
[/i] |
|
darko202 |
» 2017-05-13 10:49:38 |
|
« 1 » |