Jak zaimplementować sortowanie przez wybieranie w C?

Opublikowany: 2023-01-06

Wybór Sortuj to kolejny algorytm, który działa poprzez zlokalizowanie najmniejszej liczby całkowitej w tablicy, a następnie przypisanie jej do najwyższej pozycji. Indeks obok pozycji najmniejszej liczby całkowitej zostanie użyty do rozpoczęcia następnej tablicy, która ma zostać przeskanowana.

Spis treści

Przykład sortowania przez wybór w C

Jeśli weźmiemy tablicę z liczbami [10,2,8,4,6], w której najmniejszą liczbą jest 2. W ten sposób najmniejszą liczbę, czyli 2, umieścimy na pierwszej pozycji, po której tablica będzie wyglądać jak [2,10,8,4,6]. Następnie weźmiemy następną najmniejszą liczbę, ponieważ 2 jest już teraz na właściwej pozycji. Kolejną najmniejszą liczbą jest 4, która zostanie umieszczona na drugiej pozycji, po czym tablica będzie przeszukiwana podobnie, aż do ostatecznego posortowania.

Sortowanie przez wybór w C sortuje liczby w porządku rosnącym. Poprzez modyfikację algorytmu, liczby mogą być ułożone w malejącym Sortowaniu przez Selekcję, może być również wykonywane w innych językach oprócz C, takich jak Selection Sort C++ lub Selection Sort Python.

Ucz się kursów programistycznych online z najlepszych światowych uniwersytetów. Zdobądź programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Algorytm sortowania przez wybór

  • Najpierw ustawiamy element początkowy w sortowaniu przez wybieranie jako minimum i szukamy najmniejszego elementu w tablicy, aby uzyskać poprawną procedurę algorytmu sortowania przez wybór .
  • Minimalny element jest teraz porównywany z drugim komponentem. Jeśli drugi element spadnie poniżej minimum, zamienimy je, a następnie przypiszemy trzeciemu elementowi wartość minimalną.
  • W przeciwnym razie przejdziemy do trzeciego elementu i porównamy go do minimum. Jeśli drugi element przekroczy nasz pierwszy element, zamienimy go. Powtórz ten proces do ostatniego składnika.
  • Po każdej iteracji zobaczymy, że nasze minimum dotarło na początek nieposortowanej listy.
  • Zaczniemy indeksowanie od pierwszego wpisu nieposortowanej listy dla każdej iteracji. Dopóki lista nie zostanie posortowana lub wszystkie komponenty nie zostaną odpowiednio ustawione, będziemy powtarzać kroki od 1 do 4 kilka razy.

Popularne kursy i artykuły na temat inżynierii oprogramowania

Popularne programy
Program wykonawczy PG w rozwoju oprogramowania - IIIT B Program certyfikatów Blockchain - PURDUE Program Certyfikatów Cyberbezpieczeństwa - PURDUE Magister informatyki - IIIT B
Inne popularne artykuły
Wynagrodzenie inżyniera chmury w USA 2021-22 Wynagrodzenie architekta rozwiązań AWS w USA Wynagrodzenie programisty backendu w USA Wynagrodzenie programisty front-end w USA
Wynagrodzenie programisty internetowego w USA Pytania do wywiadu ze Scrum Masterem w 2022 roku Jak rozpocząć karierę w cyberbezpieczeństwie w 2022 roku? Opcje kariery w USA dla studentów inżynierii

Poniższy przykład z każdą iteracją pomoże w szczegółowym zrozumieniu procesu sortowania przez wybór w C

Iteracja nr 1

ja [ ] = 8,5,2,6,4

Ustaw minimum – 8

Porównaj i 0 i i 1

Ponieważ i 0 > i 1 , ustaw minimum = 5.

  • Porównaj i 1 i i 2

Ponieważ i 1 > i 2 , ustaw minimum = 2.

  • Porównaj i 2 i i 3

Ponieważ i 2 < i 3 , ustaw minimum = 2.

  • Porównaj i 2 i i 4

Ponieważ i 2 < i 4 , ustaw minimum = 2.

2 to najmniejsza liczba ze wszystkich elementów, musimy zamienić miejscami i 0 i i 2

­ Iteracja nr 2

ja [ ]= 2,5,8,6,4

Ustaw minimum 5

  • Porównaj i 1 i i 2

Ponieważ i 1 < i 2 , ustaw minimum = 5.

  • Porównaj i 1 i i 3

Ponieważ i 1 < i 3, ustaw minimum = 5

  • Porównaj i 1 i i 4

Ponownie, i 1 < i 4 , ustaw minimum = 4.

4 jest najmniejszym elementem w tablicy, dlatego musimy zamienić miejscami i 1 i i 4 .

Iteracja nr 3

ja [ ]= 2,4,8,6,5

Ustaw minimum 8

  • Porównaj i 2 i i 3

Ponieważ i 2 > i 3 , ustaw minimum = 6.

  • Porównaj i 3 i i 4

Ponieważ i 3 > i 4 , ustaw minimum = 5.

5 jest najmniejszym elementem w tablicy, musisz zamienić i 2 i i 4 .

Iteracja nr 4

ja [ ] = 2,4,5,6,8

Ustaw minimum 6

  • Porównaj i 3 i i 4

Ponieważ i 3 < i 4 , ustaw minimum = 6.

Minimum jest umieszczone we właściwym miejscu; w związku z tym żadna zamiana nie nastąpi.

Przykład sortowania przez wybieranie w C

// Sortowanie przez wybór w C

#include <stdio.h>

// funkcja do zamiany pozycji dwóch elementów

void swap(int *a, int *b) {

int temp = *a;

*a = *b;

*b = temperatura;

}

void selectionSort(int array[], int size) {

for (int krok = 0; krok < rozmiar – 1; krok++) {

int min_idx = krok;

for (int i = krok + 1; i < rozmiar; i++) {

// Aby posortować w kolejności malejącej, zmień > na < w tym wierszu.

// Wybierz minimalny element w każdej pętli.

if (tablica[i] < tablica[min_idx])

min_idx = i;

}

// umieść min we właściwej pozycji

swap(&tablica[min_idx], &tablica[krok]);

}

}

// funkcja do wydrukowania tablicy

void printArray(int tablica[], rozmiar int) {

for (int i = 0; i < rozmiar; ++i) {

printf("%d", tablica[i]);

}

printf("\n");

}

// kod sterownika

int main() {

int dane [] = {20, 12, 10, 15, 2};

int rozmiar = rozmiar(dane) / rozmiar(dane[0]);

selectionSort(dane, rozmiar);

printf("Posortowana tablica w kolejności wysyłania:\n");

printArray(dane, rozmiar);

}

Analiza złożoności sortowania przez wybór

Dane wejściowe – podano n elementów wejściowych.

Dane wyjściowe — liczba kroków wymaganych do posortowania listy.

Logika – jeśli otrzymamy n pozycji, wykonamy n-1 porównań w pierwszym przebiegu, n-2 porównań w drugim przebiegu, n-3 porównań w trzecim przebiegu i tak dalej. W związku z tym całkowitą liczbę porównań można obliczyć za pomocą;

Wyjście -

(n+1) + (n+2) + (n+3) + (n+4) + …. +1

Suma = n(n-1)/2 tj. O(n²)

Ponieważ metoda sortowania przez wybieranie wymaga dodatkowego miejsca w pamięci na tymczasowe zmienne do zamiany, ma złożoność czasową O(n2) i złożoność przestrzenną O(1).

Analiza złożoności czasu sortowania wyboru

Najlepszy przypadek: dla tablicy, która została wcześniej posortowana, metoda sortowania przez wybieranie ma złożoność czasową najlepszego przypadku równą O(n²).

Średni przypadek: Algorytm sortowania przez wybieranie ma średnią złożoność czasową O(n²), gdy elementy są ułożone pomieszane, to znaczy ani w porządku rosnącym, ani malejącym.

Najgorszy przypadek: Kiedy odwracamy malejący porządek tablicy do porządku rosnącego, najgorszy przypadek złożoności czasowej wynosi O(n²).

Czasowa złożoność metody sortowania przez wybór wynosi O(n²) w każdym z trzech scenariuszy. Wynika to z faktu, że musimy zidentyfikować absolutne minimum elementów dla każdego etapu, aby odpowiednio je ułożyć. Po prześledzeniu całej tablicy znajdziemy nasz minimalny element.

Wniosek

To kończy wpis na blogu „Sortowanie przez wybór w C”. Musisz zrozumieć, że można to wykonać również w innych językach, takich jak Selection Sort C++ i Selection Sort Python. Mamy nadzieję, że ten artykuł pomoże Ci zrozumieć, jak sortować elementy w C.

Sortowanie przez wybór nie jest jedynym etapem na drodze do zostania programistą. Jeśli masz nadzieję na znaczący wzrost w karierze programisty dzięki dyplomowi zawodowemu, upGrad jest tutaj! rozwoju frontendu upGrad (JavaScript, HTML, CSS), backendu (NoSQL-MongoDB) i mikrousług, możesz kontynuować kurs Master of Science in Computer Science UpGrad. Ten kurs, prowadzony przez IIIT Bangalore i LJMU Alumni Status, pomoże Ci rozpocząć karierę jako inżynier oprogramowania / programista full-stack z gigantami technologicznymi na całym świecie.

Ten kurs obejmuje podstawową wiedzę na temat narzędzi, takich jak Java, Spring i Hibernate, wzmacniając nasze umiejętności programistyczne z pełnym stosem, aby odkrywać rynek pracy z niezwykłymi możliwościami.

Zarejestruj się, aby dowiedzieć się więcej!

Co oznacza sortowanie przez wybieranie w strukturach danych?

Prostym algorytmem sortowania jest sortowanie przez wybieranie. W tym procesie sortowania opartym na porównaniu na miejscu lista jest dzielona na dwie połowy, posortowaną część na lewym końcu i nieposortowaną połowę na prawym końcu. Lista jako całość znajduje się początkowo w nieposortowanej połowie, a posortowana część jest pusta.

Co to jest szybkie sortowanie w C?

Algorytm sortowania znany jako Quicksort opiera się na strategii dziel i zwyciężaj. Tablica jest dzielona na podtablice (element wybrany z tablicy) poprzez wybranie elementu przestawnego.

Co to jest wybór dwukierunkowy w C?

Gdy obecne są dwa zestawy stwierdzeń — jeden zestaw dla sytuacji, gdy warunek boolowski jest prawdziwy, a drugi dla sytuacji, gdy jest fałszywy — jest to znane jako wybór dwukierunkowy (if/else).