C/C++の宿題やらせてください。7代目。
■ このスレッドは過去ログ倉庫に格納されています
0735デフォルトの名無しさん
NGNGマージソートの実装は以下の通りです。
void mergesort(int first, int last)
{
int middle;
static int i, j, k, p;
if (first < last) {
middle = (first + last) / 2;
mergesort(first, middle);
mergesort(middle + 1, last);
p = 0;
for (i = first; i <= middle; i++) work[p++] = a[i];
i = middle + 1; j = 0; k = first;
while (i <= last && j < p)
if (work[j].key <= a[i].key) a[k++] = work[j++];
else a[k++] = a[i++];
while (j < p) a[k++] = work[j++];
}
}
■ このスレッドは過去ログ倉庫に格納されています