Wprowadzenie do sortowania w C ++
Posiadanie kolekcji elementów do zamówienia, sortowanie pomaga w uporządkowaniu elementów w rekordzie na podstawie relacji porządkowania. Rozważmy rekord pliku, który zawiera wiele informacji, aby uzyskać dostęp do listy z rekordu, konieczne jest posiadanie pola klucza, aby wskazać bieżącą lokalizację elementu. Rozważmy na przykład listę nazw w bazie danych, można ją posortować alfabetycznie. Sortowanie odegrało ważną rolę w dziedzinie komputerów i technologii. Zobaczmy więcej w tym artykule.
Co to jest sortowanie w C ++?
Sortowanie to podstawowa koncepcja stosowana przez programistę lub badacza do sortowania wymaganych danych wejściowych. Kolejność złożoności jest określona przez 0 (N * log (N)). Sortowanie danych wejściowych ułatwia rozwiązywanie wielu problemów, takich jak wyszukiwanie, element maksymalny i minimalny. Chociaż sortowanie porządkuje dane w sekwencji, bardzo ważna jest wydajność procesu, która opiera się na dwóch kryteriach: - Czas i pamięć wymagana do przeprowadzenia sortowania na danych. Czas mierzy się przez zliczenie porównań użytych kluczy. Istnieje wiele algorytmów do sortowania. Ogólnie rzecz biorąc, sortowanie w C ++ można podzielić na dwa typy:
- Sortowanie wewnętrzne
- Sortowanie zewnętrzne
Składnia i przykład
Składnia:
C ++ używa wbudowanej funkcji sort () dla swoich algorytmów, aby sortować kontenery takie jak wektory, tablice.
Sortuj (tablica, tablica + rozmiar);
Przykłady:
#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)
Wynik:
Jak to działa?
Na początek weźmiemy Szybkie sortowanie, które jest uważane za ważną metodę wśród różnych typów sortowania. Podstawowe sortowanie tablicy ma podejście Quicksort. Istnieją różne sposoby implementacji sortowania, cel każdej z tych technik jest taki sam, jak porównanie dwóch elementów i zamiana ich na zmienną tymczasową. W tym artykule omówimy najważniejsze sortowanie zastosowane do wdrożenia. Oto:
- Sortowanie bąbelkowe
- Sortowanie przez wstawianie
- Szybkie sortowanie
- Sortuj wybór
Istnieje sortowanie korespondencji seryjnej, sortowanie radix, sortowanie taśm, które możemy omówić później. Najpierw przejdziemy do sortowania Bubble.
1. Sortowanie bąbelkowe
Sortowanie bąbelkowe jest jedną z najprostszych metod sortowania, które możemy wykorzystać w aplikacjach. W tej technice kolejne zamiany dokonywane są poprzez sortowane rekordy. Na każdym kroku porównuje klucz z danymi i wymienia elementy, jeśli nie w pożądanej kolejności. Sortowanie odbywa się za pomocą sąsiednich elementów, gdy tylko jeden element zostanie umieszczony w posortowanym miejscu po zamianie.
Przykład: Rozważmy nieposortowaną tablicę A () = (6, 2, 4, 7, 1)
6 | 2) | 4 | 7 | 1 |
A (0) | A (1) | A (2) | A (3) | A (4) |
Krok 1: Porównując A (0)> A (1), jeśli warunek jest prawdziwy zamień element (6> 2) true, umieść 2 w A (0). Podobnie wszystkie kroki wykonują się tak samo, dopóki tablica nie zostanie posortowana.
Teraz tablica to A () = (2, 6, 4, 7, 1)
Krok 2: 6 porównuje się z 4. Ponieważ 6 jest większe niż 4. Dlatego 6 i 4 są zamieniane.
Teraz tablica to A () = (2, 4, 6, 7, 1)
Krok 3: Element 6 jest porównywany z 7. Ponieważ 6 <2 i elementy są w porządku rosnącym, elementy nie są zamieniane.
Posortowana tablica to A () = (2, 4, 6, 7, 1).
Kontynuuj proces, aż tablica zostanie posortowana.
2. Wstawianie Sortuj
W tej technice zaczynamy od drugiego elementu danych, zakładając, że pierwszy element jest już posortowany i porównuje się go z drugim elementem, a krok jest kontynuowany z drugim kolejnym elementem. W tablicy N elementów konieczne jest posiadanie przepustów N-1, aby mieć posortowany element.
Rozważ tablicę A () = (8, 3, 6, 1)
8 | 3) | 6 | 1 |
Krok 1: Pierwszy element szuka największego elementu w tablicy do zamiany. Jeśli jest większy, pozostaje taki sam i przechodzi do drugiego elementu, tutaj 8 jest większy niż wszystkie, nie następuje zamiana.
8 | 3) | 6 | 1 |
Krok 2: Zamiana z drugim elementem
3) | 8 | 6 | 1 |
Krok 3: Zamiana z trzecim elementem
3) | 6 | 8 | 1 |
Krok 4: Zamiana z czwartym elementem
1 | 3) | 6 | 8 |
3. Szybkie sortowanie
Ta technika działa zgodnie z algorytmem dzielenia i podbijania i jest uważana za bardzo wydajną, a także szybszą w przypadku dużych tablic. Są one podzielone na trzy podsekcje: lewą, prawą i środkową. Środkowy element ma jedną wartość i jest nazywany osią obrotu. Mechanizm działa w ten sposób, element w lewym segmencie nie powinien mieć klucza większego niż środkowy element, a żaden element po prawej stronie nie ma klucza mniejszego niż klucz środkowego elementu. Teraz zacznijmy od ilustracji procesu sortowania. Quicksort używa rekurencyjnej koncepcji podczas sortowania części. Tablica jest podzielona na podsekcję, ponownie lewy i prawy segment są podzielone przez podbój. Tutaj w tym przykładzie, biorąc pod uwagę, że ostatni element ma oś obrotu, a pierwszy element przyjmuje się za niski. Rozważ element tablicy
49 | 22 | 11 | 16 | 56 | 30 |
Biorąc skrajnie prawy element, element pivot = 30
16 | 22 | 11 | 30 | 56 | 49 |
Element większy niż oś jest umieszczony w lewo, mniejszy w prawo.
16 | 22 | 11 | 56 | 49 |
Wskaźnik jest umieszczony na osi obrotu i jest podzielony wokół osi obrotu.
11 | 22 | 16 | 56 | 49 |
Podczęści są sortowane indywidualnie.
11 | 16 | 22 | 30 | 49 | 56 |
Wreszcie mamy sortowaną macierz.
4. Wybór Sortuj
Ta technika jest również nazywana sortowaniem giełdowym, które wykonuje wyszukiwanie i sortowanie w dwóch operacjach. Implementacja wymaga prostego sortowania selekcji, jak zdefiniowano poniżej. W tym przypadku wymagane jest zidentyfikowanie najmniejszego elementu obecnego w tablicy, a ten element jest sortowany na pierwszej pozycji i, następnie identyfikowany jest drugi najmniejszy element i jest on sortowany na drugiej pozycji. Sortowanie wyboru kończy swoją pętlę, gdy nieposortowana podsekcja staje się pusta. Złożoność czasowa jest podawana jako O (n 2 ).
Rozważ następującą tablicę:
63 | 26 | 13 | 23 | 12 |
1. Znajdź najmniejszy element i umieść go na początku, a zostanie on zamieniony pozycją.
12 | 26 | 13 | 23 | 63 |
2. Zidentyfikowany jest drugi element a (1) z minimalnym elementem i umieść go w drugiej pozycji, podobnie przejście jest kontynuowane.
12 | 13 | 26 | 23 | 64 |
Ostateczne posortowane wyjście
12 | 13 | 23 | 26 | 64 |
Wniosek
Podsumowując, w tym artykule skupiono się na koncepcjach sortowania i ich mechanizmie działania. Wszystkie te techniki sortowania wykorzystują koncepcje przetwarzania równoległego. Sortowanie stanowi podstawowy element składowy algorytmów strukturalnych do rozwiązywania problemów danych w świecie rzeczywistym poprzez sortowanie zestawu wartości zgodnie z wymaganiami.
Polecane artykuły
Jest to przewodnik po sortowaniu w C ++. Tutaj omawiamy wprowadzenie i składnię wraz z przykładami oraz jak to działa. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -
- Sortowanie w Tableau
- Iterator w C ++
- Funkcje tablic w C
- Sortuj sterty w C.
- Jak odbywa się sortowanie w PHP?
- Sortuj sterty w Pythonie
- Iterator w Javie
- 11 najważniejszych funkcji i zalet C ++
- Iterator w Pythonie | Korzyści i przykłady Pythona