Лабник по СПО
.pdf{
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