Я пытался выяснить это в последние часы, но без успеха.Алгоритм MergeSort с объектными классами
У меня есть несколько классов, которые я использую для добавления данных, и поэтому я могу их отображать, но теперь мне нужно реализовать MergeSort algorithem для сортировки этих данных в зависимости от названий.
У меня есть компакт-диск Object, который наследует все остальные классы, а объект CD имеет заголовок свойства, введите char.
Теперь, когда я передать указатель на мой класс я делаю Comparision и проверки, но это не работает, как он должен:
Это моя функция для алгоритма сортировки:
void merge(CD *a[], int, int, int);
void merge_sort(CD *a[], int low, int high) {
int mid;
if (low < high) {
mid = (low + high)/2;
merge_sort(a, low, mid);
merge_sort(a,mid + 1, high);
merge(a, low, mid, high);
}
}
void merge(CD *a[], int low, int mid, int high) {
int h, i, j, k;
CD *b;
h = low;
i = low;
j = mid + 1;
while ((h <= mid) && (j <= high)) {
if (a[h]->title[100] <= a[j]->title[100]) {
b[i].title[100] = a[h]->title[100];
h++;
}
else {
b[i].title[100] = a[j]->title[100];
j++;
}
i++;
}
if (h > mid) {
for (k = j; k <= high; k++) {
b[i].title[100] = a[k]->title[100];
i++;
}
}
else {
for (k = h; k <= mid; k++) {
b[i].title[100] = a[k]->title[100];
i++;
}
}
for (k = low; k <= high; k++)
a[k]->title[100] = b[k].title[100];
}
Любая идея как реализовать что-то подобное?
название [100]? Можете ли вы показать нам определение CD объекта? – jfly
Здесь: класс CD { общественность: строка издатель, местонахождение, год, пусто; \t CD(); \t void virtual input() = 0; \t void virtual output() = 0; название титула [100]; }; – sadiqevani
Вы не можете получить доступ к переменной-члену, как '.title [100]', 'title [100]' означает 101-й из массива 'title', это вне границ. – jfly