OsListSortInPlaceStrided

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Created page with "{{osslfunc |function_syntax=osListSortInPlaceStrided(list src, integer stride, integer stride_index, integer ascending) |threat_level=ignored |permissions=true |delay=0 |descr...")
 
 
Line 9: Line 9:
 
* stride_index: index of the element to sort by in stride
 
* stride_index: index of the element to sort by in stride
 
* ascending: it it is 1 or TRUE, sort in ascending order. If it is any other value, sort in descendent order.<br>
 
* ascending: it it is 1 or TRUE, sort in ascending order. If it is any other value, sort in descendent order.<br>
- Does nothing if the list length is not a multiple of stride.<br>
 
- The sort considers the elements that are at indexes that are multiple of stride. The other elements between those multiples are just copied around.<br>
 
i.e. if the element at [n * stride] is moved to [m * stride], elements [n * stride + i] are moved to [m * stride + i] for i = 1 to stride -1 (n, m and i integers).<br>
 
- if there are different object types (ie some are integer, others string, etc) at the consider indexes [n * stride], each type is considered as a sub list and each sub list is sorted.<br>
 
[1,"D",-4,"A","B"] will be [-4,"A",1,"B","D"], in ascending sort and stride 1.<br>
 
- Lists with stride 1 and elements all of same type are a lot faster to sort than others, because in that case faster algorithms can be used.<br>
 
  
 
|ossl_example=<source lang="lsl">
 
|ossl_example=<source lang="lsl">
Line 22: Line 16:
 
     state_entry()
 
     state_entry()
 
     {
 
     {
         llSay(0, "osListSortInPlace example");
+
         llSay(0, "osListSortInPlaceStrided example");
         list src = [1,"D",-4,"A","B"];
+
         list src = [1,"D",-4,"A",9,"B"];
 
         llSay(0, "original list: " + llDumpList2String(src,","));
 
         llSay(0, "original list: " + llDumpList2String(src,","));
         osListSortInPlace(src, 1, TRUE);
+
         osListSortInPlaceStrided(src, 2, 0, TRUE);
         llSay(0, "sorted in ascending order with stride 1: " + llDumpList2String(src,","));
+
         llSay(0, "sorted in ascending order with stride 2, index 0: " + llDumpList2String(src,","));
  
         src = [1,"D",-4,"A",0,"B"];
+
         src = [1,"D",-4,"A",9,"B"];
 
         llSay(0, "original list: " + llDumpList2String(src,","));
 
         llSay(0, "original list: " + llDumpList2String(src,","));
         osListSortInPlace(src, 2, 1);
+
         osListSortInPlaceStrided(src, 2, 1, TRUE);
         llSay(0, "sorted in ascending order with stride 2: " + llDumpList2String(src,","));
+
         llSay(0, "sorted in ascending order with stride 2, index 1: " + llDumpList2String(src,","));
 
     }
 
     }
 
}
 
}

Latest revision as of 12:48, 26 April 2023

osListSortInPlaceStrided(list src, integer stride, integer stride_index, integer ascending)
Identical to llListSortStrided but does the sort on the original list, so using less memory.
  • src: the list to sort
  • stride: the list stride.
  • stride_index: index of the element to sort by in stride
  • ascending: it it is 1 or TRUE, sort in ascending order. If it is any other value, sort in descendent order.
Threat Level This function does not do a threat level check
Permissions Use of this function is always allowed by default
Extra Delay 0 seconds
Example(s)
//
default
{
    state_entry()
    {
        llSay(0, "osListSortInPlaceStrided example");
        list src = [1,"D",-4,"A",9,"B"];
        llSay(0, "original list: " + llDumpList2String(src,","));
        osListSortInPlaceStrided(src, 2, 0, TRUE);
        llSay(0, "sorted in ascending order with stride 2, index 0: " + llDumpList2String(src,","));
 
        src = [1,"D",-4,"A",9,"B"];
        llSay(0, "original list: " + llDumpList2String(src,","));
        osListSortInPlaceStrided(src, 2, 1, TRUE);
        llSay(0, "sorted in ascending order with stride 2, index 1: " + llDumpList2String(src,","));
    }
}
Notes
This function was added in 0.9.3


Personal tools
General
About This Wiki