Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 19
1

Ошибка в алгоритме

11.07.2012, 09:26. Просмотров 481. Ответов 3
Метки нет (Все метки)

Алгоритм не всегда выполняется правильно( первый элемент не сортируется). В чем ошибка?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 95 procedure SortShell(a:arr);
 96 var
 97   i,j,l:longint;
 98 begin
 99   l:=(high(a)+1) div 2;
100   while l>0 do begin
101     for i:= l to high(a) do begin
102       j:=i-l;
103       while a[j]<a[j+l] do begin
104         exch(a,j,j+l);
105         if j>l then j:=j-l else break
106       end;
107     end;
108     l:=l div 2;
109   end;
110 end;
111
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2012, 09:26
Ответы с готовыми решениями:

ошибка в алгоритме
Вроде бы правильно, но что-то не так, не пойму что. В массиве А(300) найти суммы нечетных...

кто знает, где ошибка в алгоритме??
переписать все положительные элементы массива BB(N) подряд в массив ZBB.

Ошибка в алгоритме, нужно исправить
Задача: Дан целочисленный массив N*M. Разработать алгоритм и программу создания нового массива,...

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

3
Модератор
62182 / 46489 / 32057
Регистрация: 18.05.2008
Сообщений: 112,396
11.07.2012, 09:39 2
Вы думаете по этому куску можно что-то сказать?
например что такое
Pascal
1
exch(a,j,j+l);
Название процедуры
Pascal
1
procedure SortShell(a:arr);
вроде намекает на сортировку Шелла, но она и рядом с ней не лежала...
0
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 19
11.07.2012, 14:08  [ТС] 3
Извиняюсь, писал второпях, сейчас объясню
вроде намекает на сортировку Шелла, но она и рядом с ней не лежала...
Да, это сортировка методом Шелла
Вы думаете по этому куску можно что-то сказать?
например что такое
процедура, меняющая j и j+1 элемент местами, в массиве а.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30599 / 19972 / 7801
Регистрация: 22.10.2011
Сообщений: 34,773
Записей в блоге: 6
12.07.2012, 09:51 4
Цитата Сообщение от GrizZzly) Посмотреть сообщение
первый элемент не сортируется
Вот так сортируются все:

Pascal
1
2
3
4
5
6
7
// ...
while a[j]<a[j+L] do
begin
   exch(a,j,j+L);
   if j>=L then j:=j-L else break // У тебя было строго больше
end;
// ...
(про то, что A надо передавать в процедуру, как Var-параметр, иначе вообще ничего сортироваться не будет, ты и сам должен знать)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2012, 09:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Поиск седлового элемента матрицы. Ошибка в алгоритме
Всем привет. Пытался реализовать поиск седлового элемента матрицы, однако получившаяся программа...

Ошибка в алгоритме
Помогите найти ошибку в алгоритме. Алгоритм должен сортировать строки. void...

Ошибка в алгоритме
Добрый вечер. Имеется следующая задача - Помогите, пожалуйста, найти прорехи в моем алгоритме....

Ошибка в алгоритме
Всем доброго времени суток. Есть кусок программы, в общем он проверяет одинаковые элементы в масиве...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.