Implémentation d'algorithmes classiques/Algorithmes de tri/Tri par sélection

Un livre de Wikibooks.
Aller à : Navigation, rechercher

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.

Outils personnels
Espaces de noms

Variantes
Actions
Bibliothèque
Navigation
Aide
Imprimer / exporter
Boîte à outils