これを作成して、並べ替えアルゴリズムと汎用関数をよりよく理解できるようにします。基本的な挿入ソート アルゴリズムを実装し、それを複数のデータ構造 (少なくともリストと配列) で機能させようとしています。
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;
}
残念ながら、この一般的な関数を正しく並べ替えることができないようです。私は運が悪いので、これをかなり長い間見てきました。アイデア?