LlListSort

From Second Life Wiki

Jump to: navigation, search

Function: list llListSort( list src, integer stride, integer ascending );

184 Function ID
0.0 Delay
10.0 Energy

Returns a list that is src sorted by stride.

• list src List to be sorted.
• integer stride number of entries per stride, if less then 1 it is assumed to be 1.
• integer ascending if FALSE then the sort order is descending, otherwise the order is ascending.

Specification

A slow bubble sort is employed to perform the sort.
The sort order is affected by type.
Each type is sorted individually and then feathered to have the same order of types.

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

Caveats

A bubble sort is a sorting algorithm with a Big O of N*N. Why Linden Labs did not use a N*log(N) sorting algorithm such as Heap Sort or Merge Sort is unkown...

Examples

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

Source Location

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

Personal tools