Массив не сортируется должным образом, а пузырьковая сортировка и быстрая сортировка работают нормально. Я проверял много раз, чтобы найти ошибки, но не смог их найти. (не стесняйтесь редактировать вопрос, если он кажется неправильным) ................................... .
.............................................. .................................................. .................................................. .............................................
#include <iostream>
#include <ctime>
using namespace std;
const int MaxElements = 500;
int compCount = 0; // keeps track of comparisons of elements in array
int moveCount = 0; // keeps track of movement of elements in array
int main()
{
// Declarations
clock_t before; //time before sorting
clock_t after; //time after sorting
double result; //Total time
int n; //size of set
int sample[MaxElements]; //array
// Prompt the user for size of set
cout << "Enter size of set: ";
cin >> n;
cout << "---------------Selection Sort-----------------\n";
// Generate random values into the array
generateSample(sample, n);
cout << "Unsorted array: ";
printElements(sample, n);
before = clock();
selectionSort(sample, n);
after = clock();
result = static_cast<double>(after - before) / CLOCKS_PER_SEC;
cout << "\nSorted: ";
printElements(sample, n);
cout << endl << before << " " << after << "\n";
cout << result << "\n";
cout << "Movement: " << moveCount << endl;
cout << "Comparison: " << compCount << endl;
}
// Swap algorithm
void swap(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void selectionSort(int arr[], int n)
{
int i,
j,
current;
for (i = 0; i < n - 1; i++)
{
current = i;
for (j = i + 1; j < n; j++)
{
compCount++;
if (arr[j] < arr[current])
{
current = j;
}
if (current != i)
{
swap(arr[current], arr[i]);
moveCount += 3;
}
}
}
}