Повторяя основные алгоритмы сортировки – сортировку выбором, вставками, пирамидальную, понимаю как классно, когда эти алгоритмы реализовывать не надо, а можно воспользоваться готовым классом)) Это как с составлением бизнес-плана, можно писать его в экселе, добавляя туда формулы в ручную и постоянно ошибаясь либо воспользоваться готовой программой для создания бизнес-планов и она фактически отработает как калькулятор.
В Delphi, в модуле System.Generics.Collections есть класс TArray c кучей удобных методов! Так вот, отсортировать массив можно в одну строку, то есть так…
1 |
TArray.Sort<integer>(MyArray); |
Насколько я помню из книги Д. Осипова, внутри зашит алгоритм быстрой сортировки.При этом, как я понимаю можно сортировать не только integer, посмотрим что в самом юните – 3 перегруженных метода…
1 2 3 4 5 6 |
class procedure Sort<T>(var Values: array of T); overload; static; class procedure Sort<T>(var Values: array of T; const Comparer: IComparer<T>); overload; static; class procedure Sort<T>(var Values: array of T; const Comparer: IComparer<T>; Index, Count: Integer); overload; static; |
Доработаем пример из статьи про сортировку выбором следующим образом
На кнопку поставим следующий код
1 2 3 4 5 6 7 |
procedure TForm2.Button3Click(Sender: TObject); var i:integer; begin TArray.Sort<integer>(MyArray); memo1.Lines.Clear; for i := 1 to ArraySize do memo1.Lines.Add(inttostr(MyArray[i])); end; |
Протестируем…
Алгоритм для 1000 элементов сработал очень быстро. Я дольше ждал заполнения TMemo.