Шаблон массива, класс ТАггауо

 
В Delphi вы найдете немало классов, работающих с данными обобщенного типа. Давайте познакомимся с одним из наиболее показательных классов — шаблоном массива ТАггауО. Класс-шаблон ТАггауО ОПИСан В модуле System. Generics.

Collections и предназначен для оказания помощи программистам при решении задач упорядочивания элементов массива по возрастанию значений и поиску дан­ных в массиве.

 

 

 
		type TArray = class private
		class procedure Quicksort<T>(var Values: array of Th­eorist Comparer: IComparer<T>; L, R: Integer);
		public
		class procedure Sort<T>(var Values: array of T); overload;
		//другие версии процедуры сортировки Sort<T>
		class function BinarySearch<T>(const Values: array of T; const Item: T; out Foundlndex: Integer; const Comparer: IComparer<T>;Index,
		Count: Integer): Boolean; overload;
		//другие версии процедуры бинарного поиска BinarySearch<T> end;
 

Обратите внимание на то, что класс не предназначен для хранения данных, для это­го у него нет ни одного поля. Зато в распоряжении ТАггау имеются две группы од­ноименных методов-шаблонов. Методы sort<T>() позволяют сортировать данные В массивах любого простого типа, а методы BinarySearch<T> () найдут в упорядо­ченном массиве индекс ячейки с заданным элементом. Все процедуры и функции объявлены в качестве методов класса (напомню, что об этом можно судить по сло­ву class вначале объявления метода), а это означает, что методы подлежат вызову без создания экземпляра класса.

Воспользуемся услугами класса TArrayo для упорядочивания значений в трех раз­нотипных массивах (листинг 3.9). Для этого задействуем его метод sort<T> ().

 

 

			 

			program Т Array Demo;
		{$APPTYPE CONSOLE}
		uses System.SysUtils,System.Math, Generics.Collections; const Size=10; //размер массивов
		var A:Array[0..Size] of Integer; //объявляем массивы B:Array[0.,Size] of Real;
		С:Array[0..Size] of AnsiChar; i:Word;
		begin
		Randomize; //инициализируемгенератор псевдослучайных чисел for i:=0 to Size do {заполним массивы случайными значениями} begin
		А[i]:=Random(100); II генерируем целое число
В[i]:=Random(100)/RandomRange(1,100);//генерируем действительное число
			С[i]:=AnsiChar(RandomRange(33,255));//генерируем символ end;
		TArray.Sort<integer>(A) ; //упорядочим значения в массивах
		TArray.Sprt<Real>(В);
		TArray.Sort<AnsiChar>(С);
		for i := 0 to Size do //проверим результат сортировкиbegin
		Write (,A[l,i,,] = f/#9,A[i],#9);
		Write ('B[\i, ' ] = ', #9, В [i], #9) ;
		Write(*C[1,i,1]= ',#9,С[i],#9);
		WriteLn;
		end;
		ReadLn;
		end.

	 
ЗамечаниеПри разработке класса TArrayo программисты Embarcadero использовали одни из наиболее эффективных алгоритмов сортировки и поиска. Так упорядочивание эле­ментов осуществляется с помощью метода, получившего название быстрой сорти­ровки (quick sort), а поиск реализован методом бинарного поиска (binary search). Оба метода относятся к классу сложности алгоритмов с оценкой N • Log(N)t это визитная карточка наиболее производительных алгоритмов.

 



 


dle

Помоги проекту! Расскажи друзьям об этом сайте: