différences tri à bulle et par permutation

différences tri à bulle et par permutation - Algo - Programmation

Marsh Posté le 03-06-2009 à 23:43:17    

Bonsoir,
je me demande est ce qu'il y'a une différence entre le tri à bulle et celui par permutation,
pour moi c'est pratiquement le même principe, j'ai un truc à faire, et on me demande de faire et le tri à bulle et par permutation.
en gros on compare i et i+1 et on permute s'ils ne sont pas dans le bon ordre, et on refait si y'a eu une permutation pendant le dernier balayage.
Vous en connaissez des différences vous ?
 
Merci d'avance

Reply

Marsh Posté le 03-06-2009 à 23:43:17   

Reply

Marsh Posté le 04-06-2009 à 07:01:47    

http://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles
 
Permutation ej connais pas, c'ets pas plutot insertion ou fusion ?
 
http://fr.wikipedia.org/wiki/Algorithme_de_tri

Reply

Marsh Posté le 04-06-2009 à 15:30:30    

Même remarque que Joel F : ça me dit rien le tri par permutation. En cherchant sur google j'ai trouvé ça entre autre : http://www.mat.ulaval.ca/uploads/m [...] xes_01.pdf
 
Ca me fait quand même bien penser au tri à bulles.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-06-2009 à 18:46:20    

Insertion et fusion sont aussi cités, comme des tris à part à faire, merci en tout cas

Reply

Marsh Posté le 07-06-2009 à 23:40:11    

Bonsoir,
J'ai trouvé cela : comme étant un tri par permutation !
 
       'principe :
 
        'On parcourt le tableau jusqu'à ce que l'on trouve un élément plus petit  
 
        'que le précedent donc mal placé.
 
        'On prend cet élément et on le range à sa place dans le tableau puis on  
 
        'continue la lecture.
 
        'On s'arrête à la fin du tableau.
 
 
 
        Dim i, j, k As Integer
 
        Dim permute As Integer
 
        For i = 0 To UBound(tabl) - 1
 
            If tabl(i + 1) < tabl(i) Then
 
                permute = tabl(i + 1)
 
                j = 0
 
                Do While (j < i) And (tabl(j) < tabl(i + 1))
 
                    j = j + 1
 
                Loop
 
                For k = i + 1 To j + 1 Step -1
 
                    tabl(k) = tabl(k - 1)
 
                Next
 
                tabl(j) = permute
 
            End If
 
            Affichetour(tabl, i + 1)
 
Que j'ai traduit humblement par :

Code :
  1. /* tri par permutation */
  2. void permutation(int *t, int dimension)
  3. {
  4. int i,j,k,permute;
  5. for (i = 0; i < (dimension-1); i++)
  6. {
  7.   if(*(t+i+1) < *(t+i))
  8.    {
  9.     permute = *(t+i+1);
  10.     j = 0;
  11.     while( (j<i) && (*(t+j)< *(t+i+1)) ) j++;
  12.     for(k=i+1; k < j+1; k--)
  13.             *(t+k) = *(t+k-1);
  14.    *(t+j) = permute;
  15.    }
  16. }
  17. }


 
Mais le tableau n'est pas trié, des idées ? peut être que c'est mal traduit ?
Merci d'avance !

Reply

Marsh Posté le 08-06-2009 à 11:44:50    

bizarre, ça ressemble au tri par insertion, ça,non?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-06-2009 à 12:34:36    

Tout le monde le dit ...

 

Edit :
J'ai trouvé ça yoopi ! :) je vais essayer de traduire en C et voir si ça marche,
en fait ça parcourt le tableau avec pair et impair ...

Citation :


Swap Sort

 

Swap sort is similar to bubble sort, although the first time through the list the first and second elements are compared (and swapped if necessary), then the 3rd and 4th elements are compared, etc. The second time through the list the first element is skipped and the second and third elements are compared, then the 4th and 5th, and so on...

 


Swap Sort

 

Given a list of elements L = ( e1 e2 ... en ) with length n.

 


Do n/2 times:
     For each element ei where i is odd:
             If ei > ei+1 Then swap ei with ei+1

 


     For each element ei where i is even:
             If ei > ei+1 Then swap ei with ei+1

 


 
The list is now sorted.

 

This sorting algorithm is less intuitive than the bubble sort (it's not as obvious why after completion the list will be sorted).


Message édité par Nethacker le 08-06-2009 à 23:04:03
Reply

Marsh Posté le 10-06-2009 à 01:26:30    

Mais ce n'était pas ça, pour toute personne égarée je suis finalement tombé sur celui là !
 
http://www.javafr.com/forum/sujet- [...] 65307.aspx
 
Bonne chance !

Reply

Marsh Posté le 11-06-2009 à 20:25:33    


 
Bah ça c'est un tri insertion (O(n²)).
 
Mais moins performant que celui où on parcours le tableau et à chaque élément d'index I, on utilise un algorithme dichotomique pour placer l'élément courant (d'index I) à la bonne place (d'index J) dans la partie triée (indexes de 0 à (I-1)), placement effectué par une permutation circulaire entre les indexes J et I (O(n log(n))).


Message édité par Corebreaker le 11-06-2009 à 20:33:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed