Example #1
0
void writed_arr()//если вводим вручную
{
	int lenght, min, max;
	cout << "Введите длину массива: ";
	cin >> lenght;
	cout << "Введите максимальное значение элементов: ";
	cin >> max;
	cout << "Введите минимальное значение элементов: ";
	cin >> min;
	int *a = new int[lenght];
	array_generation(a, lenght, min, max);
	use_sorting(a, lenght);
	cout << endl;
}
void method_case_second(function_two f, int minimum, int maximum, int variant) {
	for (int l = 1000; l <= 8000; l = l + 1000) {
		out<<"Размер массива: "<<l<<endl;

		int* etalon = new int[l];
		int* sorting = new int[l];

		_int64 min = INT_MAX;
		_int64 max = -2;
		_int64 sum = 0;
		int kol = 0;

		switch (variant) {
		case 0:
			array_generation(etalon, l, minimum, maximum);
			break;
		case 1:
			array_generation(etalon, l, minimum, maximum);
			break;
		case 2:
			array_generation(etalon, l, minimum, maximum);
			bubble_sort(etalon, l);
			break;
		case 3:
			array_generation(etalon, l, minimum, maximum);
			array_almost_sort(etalon, l);
			break;
		case 4:
			array_generation(etalon, l, minimum, maximum);
			array_reverse(etalon, l);
			break;
		}

		for (int k = 0; k < 20; k ++) { 
			my_copy(etalon, sorting, l);

			_asm { 
				 RDTSC 
				 mov DWORD PTR timestart, eax 
				 mov DWORD PTR timestart+4, edx 
			} 
		 
			f(sorting, 0, l - 1); 
			
			_asm {
				 RDTSC 
				 mov DWORD PTR timefinish, eax 
				 mov DWORD PTR timefinish+4, edx 
			}

			if ((timefinish - timestart) > max) { 
				max = (timefinish - timestart);
			}
			if ((timefinish - timestart) < min) { 
				min = (timefinish - timestart);
			}
			sum = sum + (timefinish - timestart); 
			kol ++;
		}

		out<<"Минимальное время: "<<min<<" Ticks"<<endl;
		out<<"Среднее время время: "<<sum / kol<<" Ticks"<<endl;
		out<<"Максимальное время: "<<max<<" Ticks"<<endl;

		delete [] etalon;
		delete [] sorting;	
	};
	out<<endl;
}