Я пытаюсь сделать двустороннюю сортировку вставок.Он должен принимать самое первое значение в массиве, а затем сортировать следующие числа в массиве, сравнивая его с этим первым значением.Если число больше, оно помещается позади первого в массиве, если оно меньше, оно помещается впереди.
Вот изображение, иллюстрирующее процесс.
Массив здесь равен 6 5 3 1 8 7 2 4, чтение сверху вниз - это каждый шаг процесса сортировки.Он сравнивает число 6 с остальными числами и затем размещает их соответственно.
Пока у меня есть этот код:
void twowaysort(int n, int a[])
{
int j;
int first = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > first) {
j = i + 1;
while (j <= n - 1 && a[j] < a[j - 1]) {
swap(a[j - 1], a[j]);
j = j + 1;
}
}
if (a[i] < first) {
j = i - 1;
while (j >= 0 && a[j] > a[j + 1]) {
swap(a[j + 1], a[j]);
j = j - 1;
}
}
}
}
Хотя это работает с массивом выше, кажетсяне выполнить сортировку следующего: 13 93 58 33 58 63 11 41 87 32. Это заставляет меня поверить, что где-то есть ошибка.
Любая помощь будет оценена.