140 votes

Comment trier un tableau en fonction de la longueur de chaque élément ?

J'ai un tableau comme celui-ci :

arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"

Après le tri, le tableau de sortie doit être :

arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"  

Je veux dans l'ordre descending de la longueur de chaque élément.

3voto

shareef Points 1482

Voici le tri, en fonction de la longueur d'une chaîne avec javascript comme vous l'avez demandé :

[la solution du problème par le tri des bulles][1]

[1] : http://jsfiddle.net/sssonline2/vcme3/2/enter code here

1voto

Rishabh Gupta Points 11
#created a sorting function to sort by length of elements of list
def sort_len(a):
    num = len(a)
    d = {}
    i = 0
    while i<num:
        d[i] = len(a[i])
        i += 1
    b = list(d.values())
    b.sort()
    c = []
    for i in b:
        for j in range(num):
            if j in list(d.keys()):
                if d[j] == i:
                    c.append(a[j])
                    d.pop(j)
    return c

1voto

BRjava Points 168

Si vous souhaitez préserver l'ordre de l'élément avec la même longueur que le tableau d'origine, utilisez le tri par bulles.

Input = ["ab","cdc","abcd","de"];

Output  = ["ab","cd","cdc","abcd"]

Fonction :

function bubbleSort(strArray){
  const arrayLength = Object.keys(strArray).length;
    var swapp;
    var newLen = arrayLength-1;
    var sortedStrArrByLenght=strArray;
    do {
        swapp = false;
        for (var i=0; i < newLen; i++)
        {
            if (sortedStrArrByLenght[i].length > sortedStrArrByLenght[i+1].length)
            {
               var temp = sortedStrArrByLenght[i];
               sortedStrArrByLenght[i] = sortedStrArrByLenght[i+1];
               sortedStrArrByLenght[i+1] = temp;
               swapp = true;
            }
        }
        newLen--;
    } while (swap);
  return sortedStrArrByLenght;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X