Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Архив WinRAR / semestrovaya
.cpp#include "iostream"
#include "time.h"
#include "clocale"
#include "conio.h"
#include "stdlib.h"
#include "math.h"
#include "stdio.h"
using namespace std;
unsigned long long int sr=0, pe=0;
void insert_sort(int A[], int size);
void bubble_sort(int A[], int size);
void main()
{
setlocale(0, "rus");
int key, key2, size=20, j;
int *A; bool ex=0, ex2=0;
FILE *f;
if((f = fopen("output.txt", "a")) == NULL)
{
cout << "Ошибка создания/открытия файла!" << endl;
return;
}
cout << "\t\t\t Семестровая работа N1\n" << endl;
//for(;;){
//ex=0;
//cout << endl;
//cout << " |[1] Bubble sort" << endl;
//cout << " |[2] Insert sort" << endl;
//cout << " |[0] Выход" << endl;
//cout << " | -> ";
//cin >> key;
//if (key == 0) return;
//cout << endl;
//cout << " |[1] Почти упорядоченный массив" << endl;
//cout << " |[2] Обратный масссив" << endl;
//cout << " |[3] Случайный массив" << endl;
//cout << " | -> ";
//cin >> key2;
//cout << endl;
cout << "Чтобы начать нажмите любую клавишу . . . "; getch();
cout << "\nПожалуйста, подождите..." << endl;
cout << endl;
for(key2 = 1; key2 <= 3; key2++)
{ex=0;
for(key = 1; key <=2; key++)
{ex2=0;
for(size = 625; size <= 80000; size*=2)
{
A = new int [size];
switch(key2)
{
case 1:
if(ex==0)cout << "Выполняется: Сортировка для почти упорядоченного массива\n" << endl;
if(ex==0)fprintf(f, "Сортировка для почти упорядоченного массива\n\n");
ex=1;
for (int i = 0; i < size/4; i++) A[i] = size-i;
for (int i = size/4; i < size; i++) A[i] = i;
break;
case 2:
if(ex==0)cout << "\n-----------------------------------------------------\n\nВыполняется: Сортировка для обратного массива\n" << endl;
if(ex==0)fprintf(f, "\n-----------------------------------------------------\n\nСортировка для обратного массива\n\n");
ex=1;
j = size-1;
for(int i = 0; i < size; i++)
{
A[i] = j;
j--;
}
break;
case 3:
if(ex==0)cout << "\n-----------------------------------------------------\n\nВыполняется: Сортировка для случайного массива\n" << endl;
if(ex==0)fprintf(f, "\n-----------------------------------------------------\n\nСортировка для случайного массива\n\n");
ex=1;
for(int i = 0; i < size; i++)
A[i] = rand() %50;
break;
}
time_t start, finish;
long long int elapsed_time;
time( &start );
switch(key)
{
case 1:
bubble_sort(A, size);
if(ex2==0)cout << "\tBubble Sort:" << endl;
if(ex2==0)fprintf(f, "Bubble Sort(Сортировка методом пузырька)\n");
if(ex2==0)fprintf(f, "Кол-во элементов Сравнений Перестановок\n");
ex2=1;
break;
case 2:
insert_sort(A, size);
if(ex2==0)cout << "\tInsert sort:" << endl;
if(ex2==0)fprintf(f, "Insert sort(Сортировка вставками)\n");
if(ex2==0)fprintf(f, "Кол-во элементов Сравнений Перестановок\n");
ex2=1;
break;
}
time(&finish);
elapsed_time = finish - start;
delete A;
fprintf(f, "%11d\t%11lld\t%11lld\t%d\n", size, sr, pe, elapsed_time);
cout << "Кол-во эл-в: " << size << ", cравнений: " << sr << ", пер-к: " << pe << ", время: " << elapsed_time << endl;
if(size==80000)fprintf(f,"\n");
if(size==80000)cout << endl;
}
}
}
cout << "Для продолжения нажмите любую клавишу . . . ";
getch();
return;
}
void insert_sort(int *a, int size)
{
int x, i, j;
sr = pe = 0;
for (i = 0; i < size; i++)
{
x = a[i];
for (j = i-1; j>=0 && a[j] > x; j--)
{
sr++;
a[j+1] = a[j];
}
pe++;
a[j+1] = x;
}
}
void bubble_sort(int *a, int size)
{
bool ex=0;
int tmp, n=0;
sr = pe = 0;
size--;
while(ex==0)
{
ex=1;
for(int i = 0; i < size; i++)
{
sr++;
if(a[i] > a[i+1])
{
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
ex = 0;
pe++;
n = i;
}
}
size = n;
}
}
Соседние файлы в папке Архив WinRAR