Прежде всего, я новичок в C, поэтому прошу прощения, если мой вопрос кажется глупым. Я изучал, как использовать алгоритм пузырьковой сортировки в C, и я прошел через этот код:
#include <stdio.h>
int main() {
int ctr, inner, outer, didSwap, temp;
int nums[10] = {
78,
16,
21,
7,
13,
9,
22,
52,
67,
19
};
//Listing the array before sorting
for (ctr = 0; ctr < 10; ctr++) {
printf("%d\n", nums[ctr]);
}
//Sorting the arrays
for (outer = 0; outer < 9; outer++) {
didSwap = 0;
for (inner = outer; inner < 10; inner++) {
if (nums[inner] < nums[outer]) {
temp = nums[inner];
nums[inner] = nums[outer];
nums[outer] = temp;
didSwap = 1;
}
}
if (didSwap == 0) {
break;
}
}
//Listing the array after sorting
printf("\n\nThis is the sorted array\n");
for (ctr = 0; ctr < 10; ctr++) {
printf("%d\n", nums[ctr]);
}
return 0;
}
Код работает нормально, но я хочу понять, как во втором для l oop написано inner = outer
, и в следующем операторе if сравниваются элементы массива, в которых один из них имеет тот же номер, что и внутренний, а другой - тот же номер, что и внешний. И поскольку мы сказали, что inner = outer
, это означает, что мы сравниваем один и тот же элемент. Я думаю об этом, если outer = 0
, а с inner = outer
, то inner
тоже будет 0
, поэтому следующий оператор if будет if (nums[0] < nums[0])
, и это не имеет никакого смысла.
Я знаю, что я, вероятно, ошибаюсь, потому что код работает нормально, но что я не так думаю?
Заранее спасибо.