Как указал John3136 , вы всегда проверяете, чтобы первый элемент был меньше, чем следующий.Я предположил, что вы не хотите использовать индексирование случайных массивов, поэтому я выбрал решение, использующее указатели.Я не сильно изменил ваш код, я просто использовал указатели вместо используемых вами счетчиков.Я проверил его с помощью массива, и я думаю, что другие части вашего кода работают нормально!
void new_sort(int* const nums, int count) {
int* const end_ptr = nums + count;
int* round;
int inorder;
int temp;
inorder = 0;
int* num_ptr;
for (round = end_ptr - 1; round != nums && (!inorder); round--) {
inorder = 1;
for (num_ptr = nums; num_ptr != round; num_ptr++) {
if (*num_ptr < *(num_ptr + 1)) {
inorder = 0;
temp = *num_ptr;
*num_ptr = *(num_ptr + 1);
*(num_ptr + 1) = temp;
}
}
}
}
int main()
{
int nums[] = { 10, 4, 7, 5, 4, 3, 2, 7, 8, 9, 11, 23, 1 };
new_sort(nums, sizeof(nums) / sizeof(*nums));
return 0;
}
Надеюсь, это поможет вам.Ура!