Implémentation d'algorithmes classiques/Algorithmes de tri/Tri par sélection
Un livre de Wikibooks.
Sections |
[modifier] C
#define MAX 50 typedef int tab_entiers[MAX]; void selection(tab_entiers t) { int i, mini, j , x; for(i = 0 ; i < MAX - 1 ; i++) { mini = i; for(j = i+1 ; j < MAX ; j++) if(t[j] < t[mini]) mini = j; if(mini != i) { x = t[i]; t[i] = t[mini]; t[mini] = x; } } }
[modifier] C++
void triSelection(int tab[], int const taille) { int i, min, j, tmp; for (i=0;i<taille-1;i++) { min = i; for (j=i+1;j<taille;j++) { if (tab[j]<tab[min]) { min = j; } } if (min != i) { tmp = tab[i]; tab[i] = tab[min]; tab[min] = tmp; } } }
[modifier] Caml
Tri de vecteurs en Caml Light, en ordre décroissant :
let tri_select t = let n = vect_length t and m = ref(0) and i = ref(0) in for j=0 to (n - 2) do m := t.(j); i := j; for k = (j + 1) to (n - 1) do if !m < t.(k) then begin m:= t.(k); i:= k; end done; t.(!i) <- t.(j); t.(j) <- !m; done; t;;
[modifier] Java ou C#
public void sortBySelection(int[] t, int sizeOfTheCollection) { int i, min, j , x; for(i = 0 ; i < sizeOfTheCollection - 1 ; i++) { min = i; for(j = i+1 ; j < sizeOfTheCollection; j++) if(t[j] < t[min]) min = j; if(min != i) { x = t[i]; t[i] = t[min]; t[min] = x; } } }
[modifier] Javascript
T est un tableau de nombres dont le premier indice est 0, et n est un entier tel que l'on souhaite trier T[0..n-1].
function executer_tri_par_selection (T, n) { if (T.length < 2) return T; var i, indice_min, j, temp; for (i = 0; i < n - 1; i++) { indice_min = i; for (j = i + 1; j < n; j++) { if (T[j] < T[indice_min]) indice_min = j; } if (indice_min != i) { temp = T[i]; T[i] = T[indice_min]; T[indice_min] = temp; } } return T; }
[modifier] Pascal
procedure TriSelection(n : integer ; var t : tab); var i, j, min, tmp : integer; begin for i := 1 to n - 1 do begin min := i; for j := i + 1 to n do if (t[j] < t[min]) then min:=j; if (i <> min) then begin tmp := t[i]; t[i] := t[min]; t[min] := tmp; end; end; end;
[modifier] PHP
function triSelection(&$arrayOf) { $count = count($arrayOf); for($i=0;$i<$count-1;$i++) { $min = $i; $minV = $arrayOf[$min]; for($j=$i+1;$j<$count;$j++) { if($arrayOf[$j] < $minV) { $min = $j; $minV = $arrayOf[$min]; } } if($min != $i) { $arrayOf[$min] = $arrayOf[$i]; $arrayOf[$i] = $minV; } } }
[modifier] Python
import random MAX_LENGTH = 100 un_tableau = [ k for k in range(0,MAX_LENGTH) ] random.shuffle(un_tableau) for k in range(0,MAX_LENGTH) : min = k for l in range(k+1, MAX_LENGTH) : if un_tableau[l] < un_tableau[min] : min = l if min is not k : number = un_tableau[k] un_tableau[k] = un_tableau[min] un_tableau[min] = number
Tout ou partie de cette page est issue de l'article Wikipédia « Tri par sélection » dans sa version du 22/04/2010.