我创建它是为了更好地理解排序算法和通用函数。我已经实现了一个基本的插入排序算法,并且我试图让它与多个数据结构(至少列表和数组)一起工作。
因为我可以访问这样的列表:list[N] 来获取值,所以我认为我需要使用迭代器。所以我正在尝试转换我的解决方案。这是我要修改的基本插入排序算法:
int *insertionsort(int *a)
{
for (int i = 1; i<length(a); ++i)
{
int k = a[i];
int j = i-1;
{
while (j>=0 && a[j] > k)
{
a[j+1] = a[j--];
}
a[j+1] = k;
}
return a;
}
这是我到目前为止的通用版本:
template <class T>
T insertionsort(T a)
{
for (auto i = a.begin()+1; i<a.end(); ++i)
{
auto k = i;
auto j = i-1;
while (j>=a.begin() && *j>*k)
{
(j + 1) = j--;
}
(j + 1) = k;
}
return a;
}
不幸的是,我似乎根本无法让这个通用函数正确排序。我一直在看这个很长一段时间没有运气。想法?