LlListSort/fr

From Second Life Wiki

Jump to: navigation, search

Fonction: list llListSort( list src, integer pas, integer croissant );

Renvoie un correspondant au list src dont les éléments de chaque pas ont été triés.

• list src List à trier.
• integer pas Ecart entre deux éléments à trier, si la données est inférieure à 1, la valeur est considérée comme étant égale à 1.
• integer croissant Si FALSE alors, le tri est décroissant, sinon croissant.

Spécifications

Un tri bulle est utilisé pour effectuer l’opération.
L’ordre de tri est influencé par le type de chaque élément.
Chaque type est trié comme un list séparé puis les éléments sont recombinés dans un même list pour avoir le même ordre (cf exemple suivant).

llListSort([1, "C", 3, "A", 2, "B"], 1, TRUE) == [1, "A", 2, "B", 3, "C"]
llListSort([1, 3, 2, "C", "A", "B"], 1, TRUE) == [1, 2, 3, "A", "B", "C"]
llListSort([1, "C", 3, "A", 2, "B"], 2, TRUE) == [1, "C", 2, "B", 3, "A"]

Inconvénients

Un tri bulle a une complexité en N*N. La raison pour laquelle Linden Labs n’utilise pas un algorithme en N*log(N) tel que le tri tête ou le tri fusion est à ce jour inconnu...

Exemples

list numbers = [3, "trois", 2, "deux", 1, "un"];
default
{
    state_entry()
    {
        llOwnerSay(llDumpList2String(numbers, ","));
        // Object: 3,trois,2,deux,1,un
        numbers = llListSort(numbers, 2, TRUE);
        llOwnerSay(llDumpList2String(numbers, ","));
        // Object: 1,un,2,deux,3,trois
    }
}

Emplacement dans le code source

lsa_bubble_sort(): 'linden\indra\lscript\lscript_alloc.h'

Personal tools