Отсортировать массив целых чисел - C (СИ)
Формулировка задачи:
требуется отсортировать массив из целых чисел на возрастание,цикл for успешно справляется,только нужно ему сказать сколько раз ему повторяться.Для этого цикл while,вот только об условие я споткнулся.Вроде бы логично
поставить while(A[i] > A[i - 1]) и цикл for будет работать пока не отсортируется весь массив. Программа компилируется, но при запуске вылетает с вопросом:"Отправить отчет об ошибке Биллу Гейтцу?"))
Пробовал вместо while поставить еще один for(j = 0; j < 36; ++j), массив прекрасно сортируется,но выполняется куча лишних циклов. Я в ступоре,надеюсь на дельный совет.
#include <stdlib.h>
int main()
{
int A[6] = {9, 36, 2, 78, 4, 12};
int i, x;
while(?????){
for(i = 1; i < 6; ++i){
if(A[i] < A[i - 1]){
x = A[i - 1];
A[i - 1] = A[i];
A[i] = x;
}
printf("%d\n", A[i -1]);
}
printf("%d\n", A[5]);
}
return 0;
}Решение задачи: «Отсортировать массив целых чисел»
textual
Листинг программы
bool sorted = false;
while (!sorted) {
sorted = true;
...
if (...) {
...
sorted = false;
}
}
Объяснение кода листинга программы
В данном коде используется цикл while, который выполняется до тех пор, пока не будет выполнено условие sorted = true. В начале каждого прохода цикла значение sorted сбрасывается в false. Если в процессе выполнения цикла будет выполнено условие, то sorted снова устанавливается в true. Внутри цикла находятся два вложенных блока if и ..., которые выполняются, если выполнено условие. Если условие не выполнено, то выполняется ..., которое включает в себя операторы, изменяющие значения переменных, и в результате которых sorted устанавливается в false. В данном коде нет явной сортировки массива целых чисел, поэтому, возможно, это было пропущено при написании кода.