yamaha Temat założony przez niniejszego użytkownika |
Pomoc z #pragma pack() » 2017-01-22 20:30:44 Witam serdecznie. Mam problem, a mianowicie mam zadanie polegające na sprawdzeniu szybkości działania algorytmów sortowania. Dokładnie muszę zbadać takie zjawisko: "Jaki wpływ na szybkość sortowania ma rozmiar elementu tablicy – 1B, 2B, 4B, 8B,… A jeśli rozmiar elementu nie jest potęgą liczby 2 (uwaga! Użyj #pragma pack())?
Testuj algorytmy dla zbiorów danych o różnym rozmiarze i różnej charakterystyce: dane losowe, tablice posortowane, tablice prawie posortowane, tablice posortowane w porządku malejącym, tablice o niewielu unikalnych wartościach."
Absolutnie nie mam zielonego pojęcia jak się za to zabrać, jak wygenerować takie dane, które będą spełniały takie właściwości, nie mam zielonego pojęcia co robi i jak działa #pragma pack() :/ |
|
pekfos |
» 2017-01-22 22:00:21 Użyj struktury z polem bitowym. |
|
yamaha Temat założony przez niniejszego użytkownika |
» 2017-01-24 22:02:54 No dobra. A jak porównać czas sortowania różnych typów zmiennych? W sensie stworzylem sobie tablicę intów i zobaczyłem ile czasu zajmuje posortowanie takiej tablicy dla różnej wielkości danych wejściowych. Jak mogę stworzyć teraz tablicę np shortów albo long long? Jak alokuje dynamiczną tablicę, to nie ma znaczenia czy robię ją z shortów czy z intów czy też long long, sizeof tej tablicy zawsze wywala mi 4, a chciałbym mieć rózne wielkości tych danych. |
|
pekfos |
» 2017-01-24 22:17:14 Jak alokuje dynamiczną tablicę, to nie ma znaczenia czy robię ją z shortów czy z intów czy też long long, sizeof tej tablicy zawsze wywala mi 4, a chciałbym mieć rózne wielkości tych danych. |
Jak alokujesz dynamiczną tablicę, sam dobrze wiesz, ile masz w niej danych. sizeof się tu nie nadaje, bo zwraca rozmiar wskaźnika. |
|
mokrowski |
» 2017-01-24 22:54:18 Pokaż jak tworzysz te tablice/struktury. |
|
yamaha Temat założony przez niniejszego użytkownika |
» 2017-01-25 19:19:59 #pragma pack(push,1) struct A { char a; short c; }; #pragma pack(pop)
bool sortuj_a( const A & wg1, const A & wg2 ) { return wg1.a < wg2.a; }
int main() { int size; cin >> size; A * tab = new A[ size ]; for( int i = 0; i < size; i++ ) { tab[ i ].a =( rand() % size ); } sort( tab, tab + size, sortuj_a ); }
I chciałbym zmierzyć czas sortowania struktury 3 bitowej, ponieważ muszę sprawdzić jak zmienia się czas sortowania, gdy rozmiar elementów tablicy nie jest potęgą dwójki.[/i] |
|
mokrowski |
» 2017-01-25 22:50:15 Otocz kod znacznikami formatowania [cpp] i [/cpp]. |
|
mokrowski |
» 2017-01-25 23:51:24 Ok, to tylko taka mała uwaga. Zanim będziesz generował losowe wartości, wywołaj srand(X) gdzie X będzie jakąś liczbą. Ponieważ chcesz aby wartości losowe z uruchomienia na uruchomienie się powtarzały :-) (czyli nie inicjuj od time(NULL) bo będą zawsze różne ciągi) Tu masz kawałek którym czasem mierzę wykonanie kodu. Kompilować zgodnie z C++11. Jak będziesz chciał to sobie uprościsz. http://wklej.to/tgZ4E |
|
« 1 » 2 3 |