我有一个抽象基类(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