Quel est lalgorithme de tri le plus simple à mettre en œuvre?


Meilleure réponse

Tri à bulles

Bubble Sort est lalgorithme de tri le plus simple qui fonctionne en échangeant à plusieurs reprises les éléments adjacents sils sont dans le mauvais ordre.

Exemple: Premier passage: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Ici, lalgorithme compare les deux premiers éléments et permute depuis 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), Swap depuis 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), Swap depuis 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), Maintenant, puisque ces éléments sont déjà dans lordre (8> 5), lalgorithme ne les échange pas.

Deuxième passe: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), Swap depuis 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Maintenant, le tableau est déjà trié, b ut notre algorithme ne sait pas sil est terminé. Lalgorithme a besoin dun passage entier sans aucun échange pour savoir quil est trié.

Troisième passage: ( 1 2 4 5 8) -> ( 1 2 4 5 8) (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 )

Exemple

// C program for implementation of Bubble sort

#include

void *xp, int *yp)

{

int temp = *xp;

*xp = *yp;

*yp = temp;

}

// A function to implement bubble sort

void bubbleSort(int arr[], int n)

{

int i, j;

for (i = 0; i < n-1; i++)

// Last i elements are already in place

for (j = 0; j < n-i-1; j++)

if (arr[j] > arr[j+1])

swap(&arr[j], &arr[j+1]);

}

/* Function to print an array */

void printArray(int arr[], int size)

{

int i;

for (i=0; i < size; i++)

printf("\%d ", arr[i]);

printf("n");

}

// Driver program to test above functions

int main()

{

int arr[] = {66, 4, 25, 1, 22, 81, 90};

int n = sizeof(arr)/sizeof(arr[0]);

bubbleSort(arr, n);

printf("Sorted array: \n");

printArray(arr, n);

return 0;

}

Merci.

Réponse

Pour moi, lalgorithme de tri le plus simple est le tri par sélection, très basique et compréhensible.Lorsque vous exécutez lalgorithme de tri par sélection, vous allez comparer toutes les valeurs avec le premier élément, lorsque la valeur que vous trouvez est inférieure au premier élément, vous changez lélément avec la valeur la plus basse, et cela continuera comme ceci.

Je vais vous donner un exemple.

Array => [15,3,22,1,4,14]

min = 15.

  1. comparer avec 15, min = 15
  2. comparer avec 3, min = 3
  3. comparer avec 22, min = 3
  4. comparer avec 1, min = 1
  5. comparer avec 4, min = 1
  6. comparer avec 14, min = 1

Vous avez maintenant trouvé lélément min (first\_index). Vous devez remplacer le premier élément et les emplacements de lélément min, puis continuer jusquà ce que vous atteigniez le dernier élément.

Exemple de code C:

#include

void printArray(int arr[], int n) {

//use this function to print array

for (int i = 0; i < n; i++)

printf("\%d, ", arr[i]);

}

void sortArray(int arr[], int n) {

int min\_index = 0;

int temp = 0;

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

min\_index = i;

for (int j = i; j < n; j++) {

//compare min index"s element with new j"s element

//if you want descending sort you can change the binary

//operator > to < .

if (arr[min\_index] > arr[j]) min\_index = j;

}

//change min index"s element and i. element

temp = arr[min\_index];

arr[min\_index] = arr[i];

arr[i] = temp;

}

printArray(arr,n);

}

int arr[] = { 100,5,11,1,22,31,4,2,3 }; //initialize array

printArray(arr,9); //print unsorted array

sortArray(arr,9); //sort array then print it

return 0;

}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *