2011-10-08 7 views
1

J'ai écrit quelques programmes récursifs courts et je fais maintenant un tri récursif. J'ai utilisé jusqu'à présent 2 entrées, le tableau et un index. Existe-t-il une méthode récursive pour le tri qui n'a besoin que d'un tableau en entrée? Je pensais que Bubble Sort fonctionnerait pour cela, mais cela utilise également un index pour garder une trace de la position.Tri récursif avec uniquement un tableau comme entrée

Et au cas où quelqu'un veut savoir, j'avais un HW pour faire un tri récursif (ce que j'ai déjà fait, en utilisant un tableau et un index), c'est juste pour voir s'il est possible de le faire sans index.

+1

Je ne suis pas entièrement sûr de ce que vous demandez - il existe de nombreux algorithmes de tri récursifs, comme le tri rapide, le tri par fusion, etc. –

Répondre

0

je crois une sorte de fusion récursive peut être réalisée avec seulement un tableau en tant que paramètre: http://en.wikipedia.org/wiki/Merge_sort

Edit: Je suppose que vous pouvez sauter l'index comme ceci:

function bubble_sort(arr) 
{ 
    for (i=0 to arr.length-1) 
    { 
     if(arr[i] > arr[i+1]) 
     { 
      swap(arr, i); 
      return bubble_sort(arr); 
     } 
    } 
    return arr; 
} 

Ce n'est pas un tri parfait des bulles car l'indice de départ est toujours nul. La complexité est toujours O (n^2). Si vous êtes prêt à cloner le tableau (et perdre beaucoup de mémoire), vous pouvez remplacer

return bubble_sort(arr); 

Avec:

return combineArrays(arr.subArray(0, i), bubble_sort(arr.subArray(i, n))); 

Ensuite, il est valide, mais le gaspillage, la manière de parvenir à une récursif tri à bulles avec uniquement un tableau en tant que paramètre.

+0

khm .. le tri à bulles peut également être implémenté avec un tableau uniquement. Dites-nous pourquoi pensez-vous qu'il y a une différence? –

+0

Par exemple, j'ai vu trier les bulles ici: http://stackoverflow.com/questions/3486452/understanding-recursion-applying-it-on-bubble-sort avec plus d'une entrée. Je n'ai pas vu un exemple de tri à bulles avec seulement un tableau en entrée. –

+0

@yi_H - Je pense que l'idée est de n'utiliser que la récursivité. comment implémenteriez-vous un tri à bulles sans boucle et sans passer de paramètres supplémentaires en argument de fonction? –