Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 10


Совет 1 (общий)

Программу тестирования целесообразно написать в двух вариантах — в укороченном (МАХ = 20) и в полном (МАХ = 15 000, для интерпретатора QBasic достаточно МАХ = 5000). Их можно объединить, закомментировав ту или иную группу операторов. В укороченном варианте следует предусмотреть вывод элементов массива до и после упорядочения с целью проверки работоспособности программы. В полном варианте вывод массива следует закомментировать, чтобы это время не включалось в хронометраж алгоритма.

Совет 2 (общий)

Можно собрать в рамках одной программы все алгоритмы сортировки, но оставить незакомментированным вызов только одного из них. А затем по очереди подключать тот или иной алгоритм.

Программа 4_07.bas

DECLARE SUB BUBBLE(X%(),N%)

DECLARE SUB INSERT(X%(),N%)

DECLARE SUB SELECT1(X%(},N%)

DECLARE SUB SHELLSORT(X%(),N%)

DECLARE SUB HOARE(X%(),N%)

DECLARE SUB QUICK(X%(),LEFT%,RIGHT%)

DEFINT A-Z

CLS

CONST N=5000

DIM A(N)

FOR J=0 TO N

A(J)=INT(N*RND) 'PRINT USING "#### "; A(J); NEXT J

PRINT T1#=TIMER BUBBLE A() , N ' INSERT A (),N 'SELECT1 A(),N 'SHELLSORT A(),N 'HOARE A{},N T2#=TIMER

PRINT T2#-T1#; "сек"

'FOR J=0 TO N: PRINT USING "#### ";A(J); : NEXT J END

REM Тексты подпрограмм сортировки

Программа 4_07.с

#include <iostream.h>

#include <stdlib.h>

#include <conio.h>

#include <dos.h>

#define MAX 15000

void bubble(int *x, int n) ;

void select(int *x, int n) ;

void insert(int *x, int n);

void shell(int *x, int n);

void hoare(int *x, int n);

void quick(int *x, int left, int right);

main( ) {

int num[MAX];

int i ;

struct time w;

clrscr();

//cout << "До сортировки" << endl;

for(i=0; i < MAX; i++) // {

num[i]=random(MAX);

// cout << num[i] << " ";}

// cout << endl; // getch();

// cout << "После сортировки" « endl;

gettime (&w);

cout << (unsigned int)w.ti_sec <<".";




Содержание  Назад  Вперед