Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабник по СПО

.pdf
Скачиваний:
9
Добавлен:
05.06.2015
Размер:
1.59 Mб
Скачать

{

fmSortTr3->CPaint (fmSortTr3->PaintBox1->Canvas,m_x1,m_x2,m_y1,m_y2);

}

Создаём текст функции быстрой сортировки. void __fastcall TNewThread1::QuickSort

( int *array, int iLo, int iHi ) {int Lo, Hi, Mid, T; Lo=iLo;

Hi=iHi; Mid=fmSortTr3->Len1[(Lo+Hi)/2 ]; do

{

while(fmSortTr3->Len1[Lo]<Mid) Lo=Lo+1; while(fmSortTr3->Len1[Hi]>Mid) Hi=Hi-1; if (Lo<=Hi)

{

if (fmSortTr3->stopEvent->WaitFor(0)==wrSignaled) return;

T=fmSortTr3->Len1[Lo]; fmSortTr3->Len1[Lo]=fmSortTr3->Len1[Hi]; fmSortTr3->Len1[Hi]=T; m_x2=fmSortTr3->Len1[Lo];

m_y2=Lo; m_x1=fmSortTr3->Len1[Hi]; m_y1=Hi; Synchronize(PaintLine1) ;

//Sleep(1);

Lo=Lo+1;

Hi=Hi-1;

}

}

while(Lo<Hi);

if (Hi>iLo) QuickSort(fmSortTr3->Len1, iLo,Hi); if (Lo<iHi) QuickSort(fmSortTr3->Len1, Lo,iHi);

241

PDF created with pdfFactory Pro trial version www.pdffactory.com

}

В функции Execute вызываем функцию сортировки вставками и передаём ей начальные границы массива.

void __fastcall TNewThread1::Execute()

{

QuickSort( fmSortTr3->Len1, 0, 174 );

}

Проверяем работу программы. Для улучшения наблюдаемости процессов сортировки можно снять комментарии с операторов задержки Sleep(1) во всех функциях.

Контрольные вопросы

10.От чего зависит скорость сортировки?

11.Как запустить поток?

12.Как остановить поток?

13.Что является целью сортировки?

14.Как реализовать перестановку элементов?

15.Какие методы вывода линий на экран вам известны?

16.Что рисует процедура Polyline(points,n); и чем она отличается от процедуры LineTo(X, Y);?

17.Назначение процедуры Randomize;.

18.Способ получения случайных значений чисел.

19.Объясните работу алгоритма сортировки по весу.

20.Объясните работу алгоритма сортировки вставкой.

21.Объясните работу алгоритма быстрой сортировки.

242

PDF created with pdfFactory Pro trial version www.pdffactory.com

Литература

1.Архангельский А.Я., Тагин М.А. Программирование в С++ Builder 6 и 2006. - М.: ООО

"Бином-Пресс", 2007. - 1184 с.

2.Архангельский А.Я. Приёмы программирования в С++Builder 6 и 2006. - М.: ООО

"Бином-Пресс", 2006. - 992 с.

3.Архангельский А.Я. Delphi 2006. Справочное пособие: Язык Delphi, классы, функции

Win32 и .NET. - М.: ООО "Бином-Пресс", 2006. - 1152 с.

4.Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. - СПб.: Питер, 2001. - 736 с.

5.Ляукин И.Н., Николаев В.Т. Программирование на языке С++ Builder. Лабораторный практикум по курсу "Системное программное обеспечение". - М.: МИЭТ, 2007. - 128 с.

6.Ляукин И.Н., Олюнин П.М., Николаев В.Т. Программирование на языке Visual С++ в

примерах и задачах. Методические указания к лабораторным работам по курсу "Системное программное обеспечение". - М.: МИЭТ, 2008. - 100 с.

7.Николаев В.Т. Системное программирование в среде Delphi. Методические указания к лабораторным работам по курсу "Системное программное обеспечение". - М.: МИЭТ, 2005. - 112 с.

8.Николаев В.Т., Листопадова Ю.И. Системные функции MS DOS. Практические занятия. - М.: МИЭТ, 2000. - 44 с.

9.Подбельский В.В., Фомин С.С. Программирование на языке Си: учеб. пособие. - 2-е изд., доп. - М.: Финансы и статистика, 2005. - 600 с.

10.Таненбаум Э. Современные операционные системы. - СПб.: Питер, 2002. - 1040 с.

243

PDF created with pdfFactory Pro trial version www.pdffactory.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]