Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 11:51   #1
сергей1893
 
Регистрация: 19.03.2012
Сообщений: 5
По умолчанию сортировка. метод пузырька.

Составить программу, которая для массива, заполненного случайными целыми числами, проводит сортировку по невозрастанию методом обмена («пузырька»). Подсчитать количество присваиваний и количество сравнений при сортировке.
сергей1893 вне форума Ответить с цитированием
Старый 14.04.2012, 10:51   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Код:
for i:=1 to 9 do
  for k:=2 to 10 do begin
    if(a[i]<a[k]) then begin
      buf:=a[k];
      a[k]:=a[i];
      a[i]:=buf;
  end;
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 14.04.2012, 11:56   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
//n - количество элементов массива
//sr - количество сравнений
//pr - количество присваиваний


sr:=0;
pr:=0;
for i:=1 to n-1 do
  for j:=i+1 to n do
  begin
	sr:=sr+1;
        if(a[i]<a[j]) then 
	begin
          tmp:=a[j];
          a[j]:=a[i];
          a[i]:=tmp;
	  pr:=pr+3;
	end;
  end;
writeln('Colichestvo prisvaivani: ',pr);
writeln('Colichestvo sravneni: ',sr);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.04.2012, 07:48   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Мужики, все это очень здорово, и оно работает, но только это не пузырек.. Оно даже чем-то похоже на пузырек, но все же не он.
В пузырьковой сортировке сравниваются и переставляются _соседние_ элементы.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 15.04.2012, 08:41   #5
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

Ну и сравнивайте соседние эл-ты, в чем проблема?
Никто не обязан за Вас это делать, могли бы и постараться
Sna1L вне форума Ответить с цитированием
Старый 15.04.2012, 08:42   #6
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

TinMan, простите, думал, что Вы - тс.
Sna1L вне форума Ответить с цитированием
Старый 15.04.2012, 11:27   #7
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Ув., TinMan, если Вы не верите мне, так поверьте википедии:
http://ru.wikipedia.org/wiki/%D0%A1%...BA%D0%BE%D0%BC
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 15.04.2012, 11:44   #8
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

spein, я тоже всегда думал, что сравниваются и свопятся соседние эл-ты.
Имхо, Ваши алгоритмы больше напоминают прямой обмен, но намного более медленый.
А пузырек можно очень неплохо оптимизировать(самый лучший вариант, вроде шейкер называется)
Sna1L вне форума Ответить с цитированием
Старый 15.04.2012, 13:09   #9
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Я показал простейшую сортировку обменом. Есть еще и оптимизированная. Где вместе с обменом идет и идентификатор отсортировки массива. Значительно ускоряет сортировку в полу отсортированном массиве.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 15.04.2012, 13:39   #10
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

2spein,Если не ошибаюсь, ТС требовался конкретно пузырек... Под обменом, имелся в виду тип к которому относится сортировка. Пузырь и прямой обмен относятся к типу обменных сортировок(прошу прощения за неверное определение).
Я в разделе "Помощь студентам" выложил варианты сортировок нескольких простых, там есть и обмен и пузырек(в т.ч. улучшенный)

Последний раз редактировалось Sna1L; 15.04.2012 в 13:42.
Sna1L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод пузырька и сортировка Gula1706 Общие вопросы C/C++ 2 14.12.2010 23:24
Метод пузырька Darknes Общие вопросы C/C++ 13 29.06.2010 14:20
Метод пузырька gennc Общие вопросы C/C++ 2 15.06.2010 17:57
Сортировка строк(метод пузырька) Serjuk Помощь студентам 0 03.01.2010 19:01
Сортировка простым выбором (метод пузырька)) Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 22.09.2009 18:06