Im почти сделан с моим кодом, но мне нужна помощь с таймером для сортировки пузырьков и сортировки радикса. время всегда на ноле, я пробовал все, но он всегда заканчивается как ноль. это что-то не так с кодом. или тип таймера, который я использую.Bubble & Radix Сортировочный тест
обновление ... так что я исправил время, когда я работаю над сортировкой, чтобы определить, сортирует ли функция массив ... это то, что у меня есть, и его все еще iffy. он начинает показывать несколько «не отсортированных» и «отсортированных» при печати.
#include <iostream>
#include <cstdlib>
#include <ctime>
using std::cout;
using std::cin;
using std::endl;
int const temp = 10000;
void bubbleSort (int array [ temp ]);
void radixSort (int array [ temp ]);
int main ()
{
int A1;
int array [ temp ];
char a = '\0';
cout << "\nWould You Like To Perform Bubble and Radix Test? (y/n): ";
cin >> a;
if (a == 'y' || a == 'Y')
{
srand ((unsigned) time (0));
for (size_t i = 0; i < temp; i++)
{
A1 = (rand () % temp) + 1;
array [ i ] = A1;
}
cout << "\n-- Please Wait For Result --" << endl;
bubbleSort (array);
radixSort (array);
}
else
{
}
return 0;
}
void bubbleSort (int array [ temp ])
{
int temp1;
time_t start, end;
clock_t start = clock ();
for (int i = 0; i < temp - 1; i++)
{
for (int j = 0; j < temp - i - 1; j++)
{
if (array [ j ] > array [ j + 1 ])
{
temp1 = array [ j ];
array [ j ] = array [ j + 1 ];
array [ j + 1 ] = temp1;
}
}
}
for (int s = 1; s < temp; ++s)
{
if (array [ s ] > array [ s - 1 ])
{
cout << "sorted" << endl;
}
else
{
cout << "not sorted" << endl;
}
}
clock_t end = clock ();
printf ("Sorting Time: %f seconds\n", (double) (end - start)/1000000);
}
void radixSort (int array [ temp ])
{
int mx = array [ temp ];
int temp1;
clock_t start = clock ();
for (int i = 1; i < temp; i++)
{
if (array [ i ] > mx)
{
mx = array [ i ];
for (int j = 1; (mx/j) > 0; j *= 10)
{
int out [ temp ]; //output array
int k, count [ 10 ] = { 0 };
for (k = 0; k < temp; k++)
{
count [ (array [ k ]/i) % 10 ]++;
}
for (k = 1; k < 10; k++)
{
count [ k ] += count [ k - 1 ];
}
for (k = i -1; k >= 0; k--)
{
out [ count [ (array [ k ]/i) % 10 ] - 1 ] = array [ k ];
count [ (array [ k ]/i) % 10 ] --;
}
for (k = 0; k < temp; k++)
{
array [ k ] = out [ k ];
}
}
}
}
for (int s = 1; s < temp; ++s)
{
if (array [ s ] > array [ s - 1 ])
{
cout << "sorted" << endl;
}
else
{
cout << "not sorted" << endl;
}
}
clock_t end = clock ();
printf ("Sorting Time: %f seconds\n", (double) (end - start)/1000000);
}
'temp' - невероятно плохое имя для' size' массива. – ooga
'time_t' (возвращаемое значение' time') обычно имеет разрешение в одну секунду. Поэтому, если пробег занимает меньше секунды, вы получите нулевое время. Вместо этого вы должны использовать функцию 'clock'. – ooga
Не меняйте свой вопрос посередине. Задайте новый вопрос. – Matt