Member 13466026 Ответов: 3

Скажите, пожалуйста, почему вложенный цикл используется в exchange sort?


for(i=0;i<5;i++)
  scanf("%d",&x[i]);

for(j=0;j<5;j++)
  for(i=0;i<5;i++)      
    if(x[i] > x[i+1])     
    {
      holder = x[i];
      x[i] = x[i+1];
      x[i+1] = holder;
    }
    
printf("\n\n");
	
for(i=4;i>=0;i--)
  printf("%d \n",x[i]);


Что я уже пробовал:

Мы используем одномерный массив в этой программе, но почему мы используем вложенный цикл for ?

3 Ответов

Рейтинг:
4

Patrice T

Используйте отладчик, чтобы увидеть, как работает ваш алгоритм, он также поможет вам найти ошибку в вашем коде.

Цитата:
Мы используем одномерный массив в этой программе, но почему мы используем вложенный цикл for ?

Используйте пример ввода как 5,4,3,2,1 и посмотрите, что такое массив после всего 1 цикла для j, вы увидите причину, по которой вам нужны 2 вложенных цикла.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
21

OriginalGriff

Потому что это пузырьковая разновидность: каждый проход по внутренней петле перемещает предмет так высоко, как только может, подобно серии пузырьков, поднимающихся к вершине жидкости. Сначала он перемещает самый большой в последнюю позицию, затем он перемещает следующий самый высокий в позицию на один ниже, и так далее, пока все элементы не будут правильными.

Но...Это не будет работать правильно.
Вы понимаете, почему? В конце концов, это твое домашнее задание.


Kornfeld Eliyahu Peter

Подсказка: сколько пузырьков у вас в газировке?
(Не для тебя, ОГ!)

OriginalGriff

:скалить зубы:

Рейтинг:
2

JustWatchLittle

В спешке: потому что это так.

Неправильная подсказка:
Если вам действительно нравится это понимать, прорабатывайте что-то подобное:
Понимание алгоритма быстрой сортировки (с демонстрационным материалом) ★ мне.ДТ.в.че[^]


Надеюсь, лучше (просто найденный google):
Пузырьковая Сортировка ~ Легкое Обучение[^]


OriginalGriff

Причина моего голоса один: это не ртуть, это пузырьковый сорт.

[no name]

Разобрался.

OriginalGriff

:стон:
Спасибо, Бруно!
Что с новым счетом?

[no name]

"Что с новым счетом?": я не понимаю, я думаю.
Это просто новое, потому что ... вчера, мм, я почувствовал, что мне нужно отправить сообщение. *1) и кстати, я могу получить некоторый опыт, как здесь обращаются с новичками, и, возможно, дать какой-то вклад администраторам сайта.
Бруно

* ) Такие вещи, как я читал в прошлом в bugs&sugs, как фильтры, выбираются случайным образом. Никогда у меня не было опыта работы с бывшим акк, но теперь я могу подтвердить, что это действительно что-то случайное :)

OriginalGriff

А! Я предполагал, что это было сделано для того, чтобы вы могли создать армию кукол-носков и захватить мир! :смеяться:

[no name]

"...завладеть миром...": может быть, в моей следующей жизни: смех:

OriginalGriff

Еще есть время-и человек может мечтать! :Д