Я пытаюсь создать сортировку вставки в C. Мы использовали следующий код в школе, но он не работает.Вставка сортировка в c, требуется коррекция
#include <stdio.h>
#include <conio.h>
int main(int argc, char const *argv[])
{
int a[6] = {5,8,3,2,9,1};
int i,j, key;
int countArraySize = sizeof(a)/sizeof(int);
for (i = 0; i < countArraySize; ++i)
{
key = a[i];
j = i - 1;
while(j>=0 && key < a[j]) {
a[j+1] = a[j];
j--;
}
a[j+1] = key;
printf("%d\n", a[j+1]);
}
return 0;
}
Спасибо.
«это не работает» почти никогда не адекватное описание проблемы. Если вам нужна помощь, пожалуйста, найдите время, чтобы более четко объяснить свою проблему. В частности, укажите вход, ожидаемый результат/вывод и фактический результат/вывод (последние два отсутствуют). И вы пробовали каким-либо образом отладить это (кроме публикации на SO)? Например, используя отладчик? – kaylum
Я дам вам подсказку: ваш 'printf' печатает каждый' ключ' в точке, в которой он встречается во входном массиве. То есть вы просто распечатываете несортированные значения массива. Как вы могли изменить код для распечатки отсортированных значений? – kaylum
Совет. Распечатайте значения 'j' и подумайте об отрицательных индексах. –