我有一个抽象基类(Comparable),它实际上继承了日期和时间,还有一个继承自日期和时间的 DateTime 类。
我的问题是:我的任务是动态分配一个 Comparables 数组。
Comparable ** compArray;
compArray = new Comparable *[n]; // where n is user specified number of elements
然后我以交替的顺序用 DateTimes 填充数组。我需要使用快速排序和冒泡排序组合对这个数组进行排序。如果长度 < 8 则为气泡。Comparable** from 和 Comparable ** to 是我被允许使用的唯一参数。
但我完全被困住了。在这一点上,它不值得粘贴在我的代码中,因为它非常随意。
任何帮助将不胜感激。我花了过去几个小时试图完成这个,我的项目中只剩下排序。明天上午晚些时候到期。
在此先感谢,乔尔
编辑:
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;
作为我的长度变量......我必须计算而不是传递它,这有点烦人。
我主要只是对取消引用 ** 并在快速排序中调用它的 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]);
}
}