Передача массива в метод класса для сортировки выборки

#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 Я думаю, мне просто нужно возиться с некоторыми указателями, связанными с фактической функцией сортировки