Анализ методов сортировки одномерного массива

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Шолмов Л.И. Руководство по турбо Си. М.: Наука, 1994. – 94-98с.

2. Уинер Р. Язык Турбо Си : Пер. с англ. -М.:: Мир, 1991. – 384 с.

3. Керниган Б.В, Ричи Д.М. Си для профессионалов. М.: Энергия, 1996.– 213 с.

4. Грейд Дж. Математическое программирование. М.: Наука, 1987. – 241 с.

5. Либерман М. Алгоритмы сортировки массивов.

М.: Наука, 1997. – 43-81с.

Приложение 1

ЛИСТИНГ ПРОГРАММЫ

// листинг программы сортировки массивов разработанная Андрусевичем Б.И.

#include <stdio.h>

#include <dos.h>

#include <graphics.h>

#include <stdlib.h>

#include <conio.h>

#include <string.h>

#include <time.h>

//-------------< Создание оболочки >-------------

void windows(int w)

{

int n;

_setcursortype(0);

window(1, 1, 80, 25); // Выделение окна

textbackground(BLACK); // Цвет фона

clrscr(); // Очистка экрана

window(1, 25, 80, 25); // Выделение окна

textbackground(GREEN); // Цвет фона

clrscr(); // Очистка экрана

window(1, 25, 80, 25);

textcolor(BLACK); // Цвет текста

if (w == 1) // Проверка на выбор окна

{

n = 21;

cprintf(" Помощь Тест Выход");

window(2, 25, 4, 25);

textcolor(RED); // Управляющие клавиши

cprintf("F1"); // основного окна

window(13, 25, 15, 25);

cprintf("F2");

window(22, 25, 25, 25);

cprintf("F10");

textbackground(BLUE);

}

else

{

n =22;

cprintf(" Выход из помощи ");

window(3, 25, 6, 25);

textcolor(RED); // Управляющие клавиши

cprintf("Esc"); // окна помощи

textbackground(CYAN);

}

window(1, 1, 80, 25); // Прорисовка рамки

textcolor(WHITE);

cprintf("+------------------------------------ Тест ------------------------------------+");

for (int k = 0; k < n; k++)

cprintf("¦ ¦");

cprintf("+------------------------------------------------------------------------------+");

if (w == 1)

{

window(2, 2, 79, 2);

puts(" Эта программа демонстрирует сортировку массива двумя методами:");

window(2, 3, 79, 3);

puts(" быстрым методом и методом слияния. После чего определяется время сор-");

window(2, 4, 79, 4);

puts(" тировки массива каждым методом и результат выводится в виде гисто-");

window(2, 5, 79, 5);

puts(" граммы.");

window(2, 6, 79, 6);

window(20, 10, 60, 15);

textcolor(WHITE);

textbackground(LIGHTGRAY);

cprintf("+------------------------------------------------------------------+");

cprintf("¦ НЕОБХОДИМЫЕ ФАЙЛЫ ПРИСУТСТВУЮТ ¦");

cprintf("¦ (для тестировния нажмите F2) ¦");

cprintf("+------------------------------------------------------------------+");

closegraph();

}

}

//------------< Окно сообщения ошибок>-----------

void Error()

{

window(20, 10, 60, 15);

textcolor(WHITE);

textbackground(LIGHTGRAY);

cprintf("+----------------- Ошибка ----------------+");

cprintf("¦ ¦ ");

cprintf("¦ ¦");

cprintf("¦ ¦");

cprintf("+---------------------------------------------+");

}

//-------------< Функция помощи >----------------

help()

{

int n = 1;

FILE *hl; // Указатели на файл

char string[78];

if ((hl = fopen("test.hlp", "r")) != NULL) // Проверка на открытие файла

{

windows(0);

window(2, 2, 78, 23);

textcolor(BLACK);

while (fgets(string, 78, hl) != NULL && n < 23)

{

gotoxy(1, n++); // Построчный вывод файла

cputs(string); // помощи

}

window(36, 1, 44, 1);

printf(" Помощь "); // Вывод заголовка помощи

while (27 != getch());

}

else{

Error();

window(29, 12, 52, 12);

textcolor(BLACK);

cprintf("Файл TEST.HLP не найден");

getch();

windows(1);

}

fclose(hl);

windows(1);

return 0;

}

//--------< Функция построения гистограмм>-------

grafix(double simvol[2])

{

double CopySimvol[2]; // Масив количества символов

long float max = 0;

int gdriver = DETECT, gmode, errorcode;

int midx = 50; // Обявление переменных

int midy = 410; // с заданними начальными

int i, s; // значениями

int siz = 100;

int otst = 10;

int rovn = 45;

char chis[2];

char buf[10];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); // Запись код ошибки

if (errorcode != grOk) // Проверка на ошибку

{

Error(); // Вызов функции окна

window(26, 12, 54, 12);

textcolor(BLACK);

cprintf("Драйвер EGAVGA.BGI не найден");

getch();

windows(1);

return 0;

}

for (int y = 0; y < 2; y++) // Оприделение максимального

if (max < simvol[y]) // числа

max = simvol[y];

for (int b = 0; b < 2; b++) // Оприделение высоты столбцов

CopySimvol[b] = simvol[b] * 200 / max;

setfillstyle(CLOSE_DOT_FILL,9);

for (int n = 0; n < 2; n++) // Построение столбцов и линий

{

setcolor(BLUE);

bar3d(midx + otst + siz * n, midy - CopySimvol[n], midx + siz* (n+1 ), midy, 15, 1);

setcolor(BROWN);

line(midx + rovn + siz * n, midy + otst, midx + rovn + siz * n, midy + otst * 2);

sprintf(chis, "%d", n + 1);

setcolor(GREEN);

outtextxy((midx + rovn + siz * n) - 2, midy + otst * 2, chis);

setcolor(CYAN);

sprintf(buf, "%lf", simvol[n]);

outtextxy((midx + rovn + siz * n) - 15, midy - CopySimvol[n] - rovn, buf);

}

setcolor(BROWN);

line(midx, 100, midx, midy + otst); // Построение оси Y

line(midx, midy + otst, 280, midy + otst); // Построение оси X

line(midx - otst, midy - 200, midx, midy - 200); // Построение

line(midx - otst, midy - 100, midx, midy - 100); // линии

settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);

setcolor(GREEN);

outtextxy(535, 460, "ESC ");

outtextxy(10, 205, "100");

outtextxy(10, 305, "50");

outtextxy(350, 235, "1. Сортирвка массива быстрым");

outtextxy(350, 250, " методом");

outtextxy(350, 280, "2. Сортирвка массива методом");

outtextxy(350, 295, " слияния");

setcolor(LIGHTBLUE);

outtextxy(300, 423, "метод");

outtextxy(570, 460, "Выход");

settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);

outtextxy(220, 30, "ГИСТОГРАММА ");

settextstyle(DEFAULT_FONT, VERT_DIR, 1);

outtextxy(48, 160, "время");

while (27 != getch()); // Проверка на символ ESC

closegraph();

windows(1);

return 0;

}

/*qsort:сортирует v[left] .v[right] по возрастанию*/

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы