Sortowanie przez kopcowanie c++
Ostatnio zmodyfikowano 2022-01-10 17:55
mirek7331 Temat założony przez niniejszego użytkownika |
Sortowanie przez kopcowanie c++ » 2022-01-10 06:29:39 Uczę się na temat sortowania przez kopcowanie. Chciałbym dowiedzieć się jak mogę przerobić ten kod, aby używać tablicy numerowanej od 0, przekazać do wszystkich napisanych funkcji tablicę i adres zmiennej licznik oraz połączyć te dwie rzeczy i stworzyć jedną funkcję heapsort. #include <iostream> #include <stdlib.h> #include<time.h>
using namespace std;
int heap[ 100 ]; int licznik = 0;
void FixFromBelow() { int walker = licznik; while( walker > 1 ) { if( heap[ walker ] > heap[ walker / 2 ] ) { swap( heap[ walker / 2 ], heap[ walker ] ); walker = walker / 2; } else { break; } } }
void FixFromAbove() { int walker = 1; int _max = walker; for(;; ) { _max = walker; if( walker * 2 <= licznik && heap[ walker * 2 ] > heap[ _max ] ) { _max = walker * 2; } if( walker * 2 + 1 <= licznik && heap[ walker * 2 + 1 ] > heap[ _max ] ) { _max = walker * 2 + 1; } if( _max != walker ) { swap( heap[ walker ], heap[ _max ] ); walker = _max; } else { break; } } }
void Add( int num ) { licznik++; heap[ licznik ] = num; FixFromBelow(); }
int Get() { swap( heap[ 1 ], heap[ licznik ] ); licznik--; FixFromAbove(); return heap[ licznik + 1 ]; }
int main() { Add( 12 ); Add( 10 ); Add( 7 ); Add( 10 ); Add( 2 ); Add( 6 ); Add( 21 ); Add( 100 ); for( int i = 1; i <= licznik; i++ ) { cout << heap[ i ] << ", "; } cout << endl << "wyjmuje kolejno 4 elementy z kopca :" << endl; for( int i = 0; i < 4; i++ ) cout << "wyjalem " << Get() << endl; cout << "kopiec wyglada tak: " << endl; for( int i = 1; i <= licznik; i++ ) { cout << heap[ i ] << ","; } return 1; } |
|
nanoant20 |
» 2022-01-10 14:14:12 |
|
mirek7331 Temat założony przez niniejszego użytkownika |
» 2022-01-10 14:56:38 Głownie chciałbym dowiedzieć się jak stworzyć używając tych funkcji jedną funkcję heapsort, która używa tych podfunkcji. Mógłbym prosić o przedstawienie jakby to miało wyglądać |
|
pekfos |
» 2022-01-10 17:55:40 jak mogę przerobić ten kod, aby używać tablicy numerowanej od 0 Odejmij 1 od wszystkich indeksów. |
|
« 1 » |