#c #arrays #class #sorting
#c #массивы #класс #сортировка
Вопрос:
Я должен использовать это для сортировки массива.
template <class T>
class Selection
{
private:
T* ptr;
public:
Selection(T len)
{
cout << "Allocating Selection ptrn";
//allocate memory for the pointer
ptr = new T;
*ptr = len;
};
T getobj(void)
{
return *ptr;
};
static SelectionSort(T arr[], int n)
{
//pos_min is short for position of min
T pos_min, temp;
for (int i = 0, j; i < n - 1; i )
{
pos_min = i;//set pos_min to the current index of array
for (j = i 1; j < n; j )
{
if (arr[j] < arr[pos_min])
pos_min = j;
}
//pos_min keeps track of the index that min is in
//if pos_min no longer equals i than a smaller value must have been found
if (pos_min != i)
{
temp = arr[i];
arr[i] = arr[pos_min];
arr[pos_min] = temp;
}
}
};
};
Создал массив в main:
int arr1[10] = { 1, 2, 7, 4, 5 };
int m = sizeof(arr1) / sizeof(arr1[0])
Понятия не имею, как передать массив функции selectionSort при выборе класса (он был недействительным, но я пробовал использовать static из-за Интернета. Пока все, что я пробовал, оставляет мне около 10-13 фатальных ошибок)
Ничего из этого я не понимаю.
Каков синтаксис для передачи arr1 в selectionSort в рамках выбора класса?
Ответ №1:
Во-первых, попробуйте изменить тип pos_min в функции selectionSort с T на int и добавить void в качестве возвращаемого значения этой функции.
Затем попробуйте создать объект выбора класса с именем типа в угловых скобках, инициализируйте массив и поместите его в метод класса. Я имею в виду попытаться сделать вот так:
Selection<double> sel(5);
double ar[] = {5, 4, 3, 2, 1};
sel.SelectionSort(ar, 5);
Комментарии:
1. Это сделало это. Теперь, увидев это, я понимаю, что говорил мой друг об использовании объекта для вызова функции. Я действительно не понимаю, почему, но, по крайней мере, это работает (я сделал простой цикл чтения для обработки массива, и он фактически отсортирован) Большое вам спасибо @deepv2 Теперь мне просто нужно повторить этот процесс для других функций сортировки.
2. Неважно, что моя дислексия заставила меня думать, что она отсортирована. Но я разберусь с этим, по крайней мере, теперь я знаю синтаксис для вызова метода func Я думаю, мне просто нужно возиться с некоторыми указателями, связанными с фактической функцией сортировки