RAD Studio VCL Reference
|
Sort list.
procedure Sort; overload; procedure Sort(const AComparer: IComparer<T>); overload;
__fastcall Sort(); __fastcall Sort(const IComparer<T> AComparer);
This method sorts the list. If AComparer is provided, it is used to compare elements; otherwise the default comparator for the list elements is used.
This sort is a O(n log n) operation, where n is the number of list elements. A QuickSort algorithm is used, so the order of equal elements may not be preserved.
Delphi Examples:
{ This example demonstrates the usage of the generic TList class. } procedure TForm3.Button1Click(Sender: TObject); var List: TList<Integer>; FoundIndex: Integer; begin { Create a new List } List := TList<Integer>.Create(); { Register a notification call-back } List.OnNotify := ListChanged; { Add a few values to the list } List.AddRange([5, 1, 8, 2, 9, 14, 4, 5, 1]); MessageDlg('Index of first 1 is ' + IntToStr(List.IndexOf(1)), mtInformation, [mbOK], 0); MessageDlg('Index of last 1 is ' + IntToStr(List.LastIndexOf(1)), mtInformation, [mbOK], 0); MessageDlg('List contains elemnt 100? ' + BoolToStr(List.Contains(100)), mtInformation, [mbOK], 0); { Add another element to the list } List.Add(100); MessageDlg('There are ' + IntToStr(List.Count) + ' elements in the list.', mtInformation, [mbOK], 0); { Remove the first occurence of 1 } List.Remove(1); { Delete a few elements form position 0 } List.Delete(0); List.DeleteRange(0, 2); { Extract the remeining 1 from the list } List.Extract(1); { Set the capacity to the actual length } List.TrimExcess(); MessageDlg('There capacity of the list is ' + IntToStr(List.Capacity), mtInformation, [mbOK], 0); { Clear the list } List.Clear(); { Insert some elements } List.Insert(0, 2); List.Insert(1, 1); List.InsertRange(0, [6, 3, 8, 10, 11]); { Sort the list } List.Sort(); { Binary search for the required element } if List.BinarySearch(6, FoundIndex) then MessageDlg('Found element 6 at index ' + IntToStr(FoundIndex), mtInformation, [mbOK], 0); { Reverse the list } List.Reverse(); MessageDlg('The element on position 0 is ' + IntToStr(List.Items[0]), mtInformation, [mbOK], 0); end; procedure TForm3.ListChanged(Sender: TObject; const Item: Integer; Action: TCollectionNotification); begin { This method is called by the List everytime a change occurs } if Action = cnAdded then MessageDlg('Element added: ' + IntToStr(Item), mtInformation, [mbOK], 0) else if Action = cnRemoved then MessageDlg('Element removed: ' + IntToStr(Item), mtInformation, [mbOK], 0) else if Action = cnExtracted then MessageDlg('Element extracted: ' + IntToStr(Item), mtInformation, [mbOK], 0) end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|