我有一個抽象基類(Comparable),它具有虛擬繼承它的Date和Time以及一個DateTime類,它繼承自Date和Time。C++抽象基類ptrs到ptrs數組
我的問題是這樣的: 我的任務是動態分配一個可比較數組。
Comparable ** compArray;
compArray = new Comparable *[n]; // where n is user specified number of elements
然後我用交替順序填充DateTimes的數組。 我需要使用快速排序和bubblesort組合來排序此數組。如果長度爲泡沫< 8. Comparable ** from和Comparable **是我允許使用的唯一參數。
但我完全卡住了。在這一點上,由於它很瘋狂的隨意性,所以它不值得粘貼在我的代碼中。
任何幫助將不勝感激。我花了幾個小時試圖完成這個任務,只在我的項目中進行了排序。哪個明天早上到期。
由於提前, 喬爾
編輯:
void Sort(Comparable** a);
void quicksort(Comparable** from, Comparable** to);
Comparable** partition(Comparable** from, Comparable** to);
void Swap(Comparable** from, Comparable** to);
void safeRead(istream& sin, Comparable* d, const char* prompt);
void printArray(ostream & sout, Comparable **a, int size);
我得到了上面我arraySort.h
我用用:int aSize = _msize(a)/sizeof(Comparable) - 1;
作爲我的長度是可變的。 ..我必須計算,而不是通過它,這是一種討厭。
我主要是在解除引用**的頭痛,並在quicksort中調用它的lessThan或equals方法。一旦我明白如何做一個快速排序,它會'點擊',我將能夠輕鬆地進行冒泡排序。
編輯: 我目前有以下作爲我的冒泡排序,它根本沒有排序數組。
void Swap(Comparable** from, Comparable** to)
{
Comparable** tmp;
tmp = from;
**from = **to;
to = tmp;
}
void bubbleSort(Comparable** a, int size)
{
int i, j;
for (i=0; i<size-1; i++)
{
for (j= size - 1; j > i; j--)
if(a[j]->lessThan(*a[j-1]))
Swap(&a[j], &a[j-1]);
}
}
如果你的排序函數中沒有長度參數,那麼唯一可能的方法是'n'和'compArray'是全局的 - 它們是否允許爲全局的? (並且,通常你想要使用長度參數而不是使用全局變量來做愚蠢的事情,這聽起來像是可能是賦值中的錯誤......) – bdonlan
你允許使用std :: vector嗎? – GManNickG
GMan,我的猜測是他正在做一些介紹C++的東西,他們讓他動態分配二維數組。所以不,載體可能不允許哈哈。嗯,我記得那些日子... – Polaris878