我一直在試圖弄清楚這個東西在過去的幾個小時,但沒有成功。MergeSort算法與對象類
我有幾個類用於添加數據,所以我可以顯示它們,但現在我必須實現MergeSort算法根據標題對這些數據進行排序。
我有對象CD,其中所有其他類繼承,對象CD具有屬性標題,類型char。
現在,當我的指針傳遞給我的班級我做的比較和檢查,但它不工作應該如何:
這是我對排序算法功能:
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
Here: class CD { public: string publisher,location,year,empty; \t CD(); \t void virtual input()= 0; \t void virtual output()= 0; char title [100]; }; – sadiqevani
你不能像'.title [100]'那樣訪問成員變量,'title [100]'意味着數組'title'的第101個,它超出了界限。 – jfly