Помощь - Поиск - Пользователи - Календарь
Полная версия: алгоритм)) > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
KOsTay
Была создана программа, которая должна выполнять сортировку массива x [0..n] по возврастанию, последующему алгоритму: на каждом шаке выбирается следующий по порядку элемент входных данных и вставляет на нужную позицию в уже отсортированном списке, до тех пол, пока набор входных данных не будет исчерпан. основная часть кода программы выглядет так:

1. НЦ ДЛЯ i ДО n
2. t: x[i]
3. НЦ ДЛЯ j ОТ 1 ДО i
4. k:=j
5. ЕСЛИ x[j-1]<=t
6. ТО ПРЕРВАТЬ ЦИКЛ
7. ВСЕ
8. x[j]:=[j-l]
9. k:=j-1
10. КЦ
11. x[k]:=t
12.КЦ

В КАКОЙ СТРОЧКЕ ОШИБКА?))[
Harch
А ваши мысли есть?
Botan
Я не знаю, где тут у вас ошибка, ибо мне непонятны некоторые ваши обозначения. А по сему привожу работостособный участок кода на С++

где то у вас должна быть прописана процедура swap, которая будет менять местами значения 2х переменных :

void swap(int &p, int &q)
{
int t = p;
p = q;
q= t;
}

а теперь собственно код:

for(int i = 0; i<n; ++i)
{
int tmp = i;
for(int j = i; j<n; ++j) //вот в этом цикле мы будем искать наименьшее из оставшихся значений
{ //и его номер положим в переменную tmp
if(a[j]<a[tmp])
{
tmp = j;
}
}
swap(a[i], a[tmp]);
}

Таким оборазом, у нас этот отсортированный кусок будет находится в начале массива, и с каждой итерацией внешнего цикла он будет увеличиватся на 1 элемент.
З.Ы. еслисвы програмируете на паскале, то думаю вам не составит труда перпевести этот код с С на паскаль.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.