Sprawozdanie.docx

(37 KB) Pobierz

Sprawozdanie – algorytmy sortujące

10.12.2012r.

Mateusz Kaczmarczyk

Jakub Jóźwiak

 

 

 

Celem tego sprawozdania jest przetestowanie szybkości działania 4 algorytmów sortujących w zależności od liczby i rodzaju danych do posortowania:

BubbleSort (sortowanie bąbelkowe)

InsertionSort (sortownie przez wstawianie)

MergeSort (sortowanie przez scalanie)

QuickSort (sortowanie szybkie).

 

Platforma testowa

Komputer o następujących parametrach:

·         procesor Intel Core i5 (2x2,3GHz)

·         4GB pamięci RAM

·         64-bitowy system operacyjny Windows 7 Home Premium

·         Visual Studio Professional 2012

 

Napisany przez nas program testujący algorytmy sortowania dokonuje wszystkich pomiarów podczas 1 uruchomienia. Wyniki zawierające informacje o czasach wykonywania 4 algorytmów sortujących (dla różnych typów i ilości danych) zapisywane są do plików tekstowych. Po zakończeniu każdego z sortowań automatycznie otwierany jest plik z wynikami.

 

Test wykonaliśmy dla 4 typów danych:

1.       Losowe liczby z zakresu [0,1000]

2.       Posortowane liczby z zakresu [0,1000]

3.       Odwrotnie posortowane liczby z zakresu [0,1000]

4.       Losowe liczby z zakresu [0,1]

 

Oraz dla następujących ilości danych:

1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k.

Dla MergeSort i QuickSort dodatkowo sprawdziliśmy działanie algorytmów dla: 256k, 512k, 1024k i 2048k liczb, ponieważ dla mniejszych ilości wykonywały się one w czasie poniżej 16ms, co uniemożliwiało zbadanie zależności czasu od ilości danych.

 

k=1024 elementy.

 

Wyniki pomiarów przedstawiamy w postaci tabeli oraz wykresów.


BubbleSort – sortowanie bąbelkowe

 

 

1k

2k

4k

8k

16k

32k

64k

128k

Losowe liczby [0,1000]

0

15

47

265

1186

4930

13587

29204

Posortowane liczby

0

0

0

0

0

0

0

0

Odwr. posortowane liczby

0

0

16

62

266

982

3900

15491

Losowe liczby [0,1]

0

0

15

63

327

1342

5476

22573

k = 1024 elementy

Wszystkie czasy sortowania podane w milisekundach.

 

 

 

BubbleSort to prosta metoda sortowania o średniej (i jednocześnie pesymistycznej) złożoności czasowej O(n2). W przypadku optymistycznym (dane już posortowane) złożoność wyniesie O(n), ponieważ algorytm przejdzie przez tablicę tylko raz - dzięki fladze, która sprawdza czy elementy zostały chociaż raz zamienione.

Algorytm BubbleSort nie wymaga dodatkowej pamięci i jest bardzo prosty w implementacji. Jego wadą jest niska wydajność dla większej liczby elementów.

 

Złożoność:

·         Typowa : O(n2)

·         Pesymistyczna: O(n2)

·         Optymistyczna O(n)

InsertionSort – sortowanie przez wstawianie

 

 

1k

2k

4k

8k

16k

32k

64k

128k

Losowe liczby [0,1000]

0

0

0

15

63

187

780

3073

Posortowane liczby

0

0

0

0

0

0

...
Zgłoś jeśli naruszono regulamin