Привет всем, я пытаюсь написать функцию сортировки, но у меня возникают проблемы с выяснением, как инициализировать значение, и заставить эту функцию работать как универсальный шаблон. Сортировка работает по:
Найдите пару = (ii, jj) = с минимальным значением = ii + jj =, например, при A [ii]> A [jj]
Если такая пара существует, то
поменяйте местами A [II] и A [JJ] еще
перерыв;
Функция, которую я написал, выглядит следующим образом:
template <typename T>
void sort(T *A, int size)
{
T min =453;
T temp=0;
bool swapper = false;
int index1 = 0, index2 = 0;
for (int ii = 0; ii < size-1; ii++){
for (int jj = ii + 1; jj < size; jj++){
if((min >= (A[ii]+A[jj])) && (A[ii] > A[jj])){
min = (A[ii]+A[jj]);
index1 = ii;
index2 = jj;
swapper = true;
}
}
}
if (!swapper)
return;
else
{
temp = A[index1];
A[index1] = A[index2];
A[index2] = temp;
sort(A,size);
}
}
Эта функция будет успешно сортировать массив целых чисел, но не массив символов. Я не знаю, как правильно инициализировать значение min для начала сравнения. Я попытался инициализировать значение, просто сложив вместе первые два элемента массива (min = A [0] + A [ 1]), но мне кажется, что для этого алгоритма он потерпит неудачу. Я знаю, что это своего рода странный тип сортировки, но это практика для теста, так что спасибо за любой вклад.