imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 11.08.2008, 18:50     # 1
Levilaulada
Guest
 
Сообщения: n/a

Post Объясните методы сортировки массивов( для идиотки)

Прочитала тысячу раз статью, погуглила, но код дают частичный. Меня интересует как именно нужно объявить переменные в случае сортировки выбором и пузырьковой. Авторы не объясняют новых переменных, все скомкано как-то=((

Вот как они описывают метод выбора:
min:=m[1];
t:=1;
FOR i:=1 to 10 do
if m[i]><m[t] then t:=j;
buf:=m[t];
m[t]:=m[i];
m[i]:=buf;
end;

Я НЕ ПОНИМАЮ что за переменная buf, какой ее тип! Нужно ли объявлять m[t] и что за переменная j?
На мой вариант, естественно, компилятор матюкается.


Program massivv;
var
mas: ARRAY[1..10] of real;
i: integer;
t: integer;
min: integer;
j: boolean;
buf: integer;
begin
FOR i:=1 to 10 do
begin
Writeln('Введите элемент последовательности N: ',i);
Readln(mas[i]);
end;
min:=mas[1];
t:=1;
FOR i:=1 to 10 do
if mas[i]><mas[t] then t:=j;
buf:=mas[t];
mas[t]:=mas[i];
mas[i]:=buf;
end;
end.

Хотелось бы также увидеть полную версию сортировки методом вставки и особенно пузырьковой. Если кто-то не полениться написать, буду очень благодарна, если есть ссылки-дайте пожалуйста
 
Старый 11.08.2008, 20:11     # 2
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 515

Borland - Гад и сволочь
Цитата:
Сообщение от Levilaulada Посмотреть сообщение
что за переменная buf, какой ее тип
Тип тот же самый, что у элемента массива (в данном случае real). И у min, кстати, тип тоже должен быть real.

Цитата:
Сообщение от Levilaulada Посмотреть сообщение
Нужно ли объявлять m[t]
Да, насколько я знаю паскаль.


Цитата:
Сообщение от Levilaulada Посмотреть сообщение
Хотелось бы также увидеть полную версию сортировки методом вставки и особенно пузырьковой
Insertion sort http://www.softpanorama.org/Algorithms/Sorting/insertion_sort.shtml
BubbleSort http://www.softpanorama.org/Algorithms/Sorting/bubblesort.shtml
Тут есть и другие методы http://www.softpanorama.org/Algorithms/sorting.shtml

Правда, всё на C, но понять можно. Знал бы Паскаль - переделки на пару минут...

Цитата:
Сообщение от Levilaulada Посмотреть сообщение
что за переменная j
Судя по комменту того исходника - index of the end of sorted region. Явно должна быть integer.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 12.08.2008, 03:04     # 3
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

PSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форуме
почитайте тут: http://algolist.manual.ru/sort/index.php
__________________
Дураки не динозавры - они не вымрут...
PSyton вне форума  
Старый 12.08.2008, 21:35     # 4
Nerey_ser
Junior Member
 
Аватар для Nerey_ser
 
Регистрация: 30.03.2006
Адрес: Беларусь
Сообщения: 79

Nerey_ser Путь к славе только начался
В первом приведёном коде ни одного begin, но end есть. Неудивительно, что компилятор ругается.
__________________
Дай человеку рыбу - он будет сыт один день. Научи человека рыбачить - он будет сыт всю жизнь.
Nerey_ser вне форума  
Старый 13.08.2008, 00:27     # 5
CheshireCat
Member
 
Аватар для CheshireCat
 
Регистрация: 19.03.2006
Сообщения: 220

CheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форуме
Цитата:
Сообщение от Levilaulada Посмотреть сообщение
j: boolean;
Цитата:
Сообщение от Levilaulada Посмотреть сообщение
t:=j;
на сколько я помню, такое делать нельзя

j - boolean, т.е. True\False
t - он integer

buf - видимо сокращение от buffer - т.е. используется как переменная для временного хранения данного
Цитата:
Сообщение от Levilaulada Посмотреть сообщение
buf:=mas[t];
mas[t]:=mas[i];
mas[i]:=buf;
mas на месте t идёт в buf
mas на месте i идёт в mas на месте t
то что оказалось в buf идёт в mas на месте i
______________
т.е. mas[t] и mas[i] меняются местами


Напиши подробнее что требуется сделать, что дано и т.п.

Последний раз редактировалось CheshireCat; 13.08.2008 в 00:41.
CheshireCat вне форума  
Старый 13.08.2008, 20:28     # 6
Levilaulada
Guest
 
Сообщения: n/a

Всем спасибо, просветление наступило.Вот я сделала пузырьковым методом:
Program sortirov_puzirok;
var
m: array[1..5] of integer;
ind: boolean;
i: integer;
buf: integer;
begin
For i:=1 to 5 do
begin
Writeln('Введите число последовательности N: ',i);
Readln(m[i]);
end;
Repeat
ind:=true;
For i:=1 to 4 do
if m[i]>m[i+1] then
begin
buf:=m[i];
m[i]:=m[i+1];
m[i+1]:=buf;
ind:=false;
end;
until ind;
Writeln('Результат сортировки по возрастанию: ');
For i:=1 to 5 do
Writeln(m[i]);
end.
__________
с сортировкой выбором так ничего не получается=((уже все методы перепробовала, кроме правильного ^^.

Последний раз редактировалось Levilaulada; 13.08.2008 в 21:57.
 
Старый 13.08.2008, 23:41     # 7
CheshireCat
Member
 
Аватар для CheshireCat
 
Регистрация: 19.03.2006
Сообщения: 220

CheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форуме
Цитата:
Сортировка выбором

На этот раз при просмотре мaccива мы будем искать наименьший элемент, Сравнивая его с первым. Если такой элемент найден, поменяем его местами с первым. Затем повторим эту операцию, но начнем не с первого элемента, а со второго. И будем продолжать подобным образом, пока не рассортируем весь массив.
или тут:
http://ru.wikipedia.org/wiki/%D0%A1%...80%D0%BE%D0%BC

Цитата:
Шаги алгоритма:

1. находим минимальное значение в текущем списке
2. производим обмен этого значения со значением на первой позиции
3. теперь сортируем хвост списка, исключив из рассмотрения уже отсортированный первый элемент
Код:
for i := 1 to n - 1 do
begin
  min := i;
  for j := i + 1 to n do
    if a[min] > a[j] then
      min := j;
  t := a[i];
  a[i] := a[min];
  a[min] := t;  
end;
Цитата:
Program sortirov_vibor;
var
m: array[1..5] of integer;
i: integer;
j: integer;
min: integer;
begin
For i:=1 to 5 do
begin
Writeln('Введите число последовательности N: ',i);
Readln(m[i]);
end;

for i := 1 to 4 do
begin
min := i;
for j := i + 1 to 5 do
if m[min] > m[j] then
min := j;
t := m[i];
m[i] := m[min];
m[min] := t;
end;

Writeln('Результат сортировки по возрастанию: ');
For i:=1 to 5 do
Writeln(m[i], ' ');
end.
Представь что у тебя в ряд стоят девушки с разными сумочками... )))))
Ты смотришь на каждую по очереди и сравниваешь с оставшимися в ряду у кого самая красивая сумочка.
Если нашла, то меняешь их местами.

В первый заход на первом месте оказыается девушка с самой красивой сумочкой.
Во второй на втором оказывается менее красивая сумочка и так далее.....
В последний заход ты сравниваешь сумочки девушек на предпоследнем и последнем месте в ряду.

Последний раз редактировалось CheshireCat; 15.08.2008 в 14:19.
CheshireCat вне форума  
Старый 14.08.2008, 10:52     # 8
AlgualKi
Junior Member
 
Регистрация: 24.06.2007
Сообщения: 121

AlgualKi Путь к славе только начался
М-да, а как на сумочках сортировку вставкой объяснить? Пузырек мне понравился, мож так мне его студентам объяснять
Девушке совет - делайте отступы, а то ни фига не понятно.
AlgualKi вне форума  
Старый 14.08.2008, 17:36     # 9
CheshireCat
Member
 
Аватар для CheshireCat
 
Регистрация: 19.03.2006
Сообщения: 220

CheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форуме
AlgualKi, а ты на колечках или кофточках..
Отступы форум убирает. А так - обязательно. И закомментировать то что стало понятно!

Да, кстати, это был не пузырёк, а сортировка выбором.
CheshireCat вне форума  
Старый 14.08.2008, 18:02     # 10
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Комментарий Модератора:
Чтобы форум никакие отступы не убирал надо код в тег [ CODE ] (пробелы убрать )заключать, а никак ни в тег цитаты!
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 16.08.2008, 10:30     # 11
Levilaulada
Guest
 
Сообщения: n/a

CheshireCat, спасибо за забавные объяснения, смеялась долго)В целом я понимала алгоритм, а вот написать программу не удавалось. В коде нашла две ошибки, но все теперь работает!

AlqualKi, студентам желательно так не объяснять, иначе они будут умственно оболванены.
 
Старый 16.08.2008, 11:46     # 12
CheshireCat
Member
 
Аватар для CheshireCat
 
Регистрация: 19.03.2006
Сообщения: 220

CheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форумеCheshireCat Популярный человек на этом форуме
Levilaulada ну и отлично, пожалуйста.

Там дальше рекурсии пойдут, поинтеры всякие..
CheshireCat вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:29.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.