Să exersăm

Exercițiul 23.1


După cum ați aflat, algoritmul bubble sort este destul de lent. Din acest motiv trebuie să cunoaștem și alți algoritmi de sortare un pic mai eficienți. În funcția selection_sort() lipsește implementarea algoritmului. Scrie codul lipsă și pornește programul. Funcția main nu trebuie să fie modificată.

Salveaza acest program deoarece la pasul următor ai să ai nevoie de el !

#include <stdio.h>

void print(int a[], int n)
{
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);
}

void selection_sort(int a[], int n)
{
    /* scrie implementarea aici */
}

int main()
{
    int a[] = {49, 32, 15, -5, 3, -5, 101};
    int n = sizeof(a) / sizeof(a[0]);
    selection_sort(a, n);
    print(a, n);
}

Exercițiul 23.2


Modifică exercițiul de la exemplul trecut, astfel încât selection sort să sorteze elementele în ordine descrescătoare. Funcția main rămâne neatinsă.

#include <stdio.h>

void print(int a[], int n)
{
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);

}

void selection_sort(int a[], int n)
{
    /* scrie implementarea aici */
}
int main()
{
    int a[] = {49, 32, 15, -5, 3, -5, 101};
    int n = sizeof(a) / sizeof(a[0]);

    selection_sort(a, n);
    print(a, n);
}

Sarcini practice


  1. Rescrie algoritmul bubble sort fără a utiliza fanionul (variabila e_permutat). Încearcă să cauți câteva variante de implementare în surse externe. Analizează codul.
  2. Încearcă să explici unui coleg principiul de lucru a acestui algoritm (fără cod, doar algoritmul).