ぼるじょあがC/C++の宿題を片づけますYO! 31代目
■ このスレッドは過去ログ倉庫に格納されています
005634
NGNG次にinsertion_sortを使って
static const int insertion_switch = 10;
/* クイックソート */
void quick_sort(int* first, int* last)
{
ptrdiff_t length = last - first;
int m = *(first + length / 2);
int* left = first, * right = last - 1;
for (; ; )
{
if (length <= 1)
return;
if (length <= insertion_switch)
{
insertion_sort(first, last);
return;
}
while (*left < m) ++left;
while (*right > m) --right;
if (right <= left) break;
int temp = *left; *left = *right; *right = temp;
}
quick_sort(first, left);
quick_sort(right, last);
}
あとはint a[100];に対してquick_sort(a, a + 100);とすればいい。
■ このスレッドは過去ログ倉庫に格納されています