Не очень понятно, что означает "время, занявшее на сортировку каждым из методов" - метод в задании всего 1.
Программе нужно сказать количество элементов в массиве, после этого она выведет необходимую информацию. Если нужен вывод самих массивов, раскомментируйте соответствующие строки.
void selection_sort(int *arr, int n, std::string name) { /*std::cout << "Неотсортированный массив " << name << std::endl; for (int i = 0; i < n; i++) std::cout << arr[i] << " "; std::cout << std::endl;*/ std::clock_t c_start = std::clock(); for (int i = 0; i < n - 1; i++) { int ind_min = i; for (int j = i + 1; j < n; j++) if (arr[j] < arr[ind_min]) ind_min = j; if (ind_min != i) { int t = arr[ind_min]; arr[ind_min] = arr[i]; arr[i] = t; } } std::clock_t c_end = std::clock(); std::cout << "Отсортированный массив " << name << " (сортировка выбором)"<< std::endl; /*for (int i = 0; i < n; i++) std::cout << arr[i] << " "; std::cout << std::endl;*/ float time = 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC; std::cout << "Времени затрачено: " << time << " мс" << std::endl; }
int main() { setlocale(LC_ALL, "rus"); int n; std::cout << "Число элементов массива: "; std::cin >> n; int *arr = new int[n]; arr[0] = 0; for (int i = 1; i < n; i++) arr[i] = arr[i-1] + rand() % 3; selection_sort(arr, n, "[Отсортирован по возрастанию]"); arr[0] = 10000; for (int i = 1; i < n; i++) arr[i] = arr[i-1] - rand() % 3; selection_sort(arr, n, "[Отсортирован по убыванию]"); for (int i = 0; i < n; i++) arr[i] = rand() % 10000; selection_sort(arr, n, "[Случайный массив]"); return 0; } Пример работы: Число элементов массива: 30000 Отсортированный массив [Отсортирован по возрастанию] (сортировка выбором) Времени затрачено: 1760 мс Отсортированный массив [Отсортирован по убыванию] (сортировка выбором) Времени затрачено: 2838 мс Отсортированный массив [Случайный массив] (сортировка выбором) Времени затрачено: 1789 мс
Program PAS; Const N = 14; Var A:Array[1..N] of integer; i,Max,Min:integer; Begin Randomize; Write('Исходный массив:'); For i:= 1 to N do Begin A[i]:=random(90)+1; Write(' ',A[i]); End; WriteLn; Max:=1; Min:=1; For i:= 2 to N do Begin if A[i]>A[Max] then Max:=i; if A[i]<A[Min] then Min:=i; End; WriteLn('Max(A) = A[',Max,'] = ',A[Max]); WriteLn('Min(A) = A[',Min,'] = ',A[Min]) End.