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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2011, 00:38   #1
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию Сортировка пузырьком, выбором, вставкой.

Напишите пожалуйста программы с сортировками пузырьком, выбором, вставкою для одномерных масивов. Надо полностью программы, где сортировки записаны в процедурах.
vadiprog вне форума Ответить с цитированием
Старый 28.11.2011, 01:01   #2
_Колибри_
Пользователь
 
Аватар для _Колибри_
 
Регистрация: 22.10.2011
Сообщений: 15
По умолчанию

Вот пузырьковая:
В возрастающем порядке
Код:
Procedure SorBubble();
const
 ArrSize = 10;  // размер массива
var
  t: boolean;
  Arr: array[1..ArrSize] of Integer;
begin

  t:= True;
  while t do
  begin
    t:= False;
    for I:= 1 to ArrSize-1 do
      if Arr[I] > Arr[I+1] then
        begin  // меняем местами
           temp := Arr[i];
           Arr[i] := Arr[i+1];
           Arr[i+1] := temp;
           t:= True;
        end;
  end;

end;

Последний раз редактировалось _Колибри_; 28.11.2011 в 01:04.
_Колибри_ вне форума Ответить с цитированием
Старый 28.11.2011, 16:19   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

1) метод пузырька
Код:
begin
   for j:=1 to N-1 do
     for i:=1 to N-j do
        if M[i] > M[i+1] then
              swap(M[i],M[i+1])
end;
2) Сортировка вставками
Код:
begin
   M[0] := -oo;
   for j:=2 to N do
    begin 
      i := j; 
        while M[i] < M[i-1] do
          begin 
              swap(M[i],M[i-1]);
              i := i-1
          end
    end 
end;
3)Сортировка выбором
Код:
begin
   for j:=1 to N-1 do
    begin 
        FindMin(j, i);
        swap(M[j],M[i])
    end 
end;
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 28.11.2011 в 16:25.
McFrey вне форума Ответить с цитированием
Старый 28.11.2011, 17:05   #4
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

(c) не мое
Код:
type 
itp = Longint; 
mas = array [0..max] of itp;

{ Сортировка вставками }
  procedure InsertSort( var A : mas );
    var
      i, k : Integer;
      x : itp;
    begin
      { Вставляем в уже отсортированную часть элементы со 2 по max }
      for i := 2 to max do
        begin
          k := i;
          x := A[i];
          { Передвигаем на 1 позицию направо элементы,
            большие вставляемого элемента (он записан в x) }
          { Условие k > 1 гарантирует, что мы не выйдем за
            границу массива, если вставляется элемент,
            меньший всех предыдущих.
            В Turbo Pascal условия вычисляются в обратном порядке,
            поэтому условие цикла while нужно заменить на
            (A[k - 1] > x) and (k > 1) }
          while (k > 1) and (A[k - 1] > x) do
            begin
              A[k] := A[k - 1];
              k := k - 1;
            end;
          { Вставляем элемент в нужную позицию }
          A[k] := x;
        end;
    end;
 
  { Сортировка выбором }
  procedure SelectSort2(var A : mas);
    var
      i, j, m : Integer;
      x : itp;
    begin
      { Ищем элементы для позиций с 1 по max - 1 }
      for i := 1 to max - 1 do
        begin
          m := i;
          x := A[i];
          { Просматриваем все еще не выбранные элементы }
          for j := i + 1 to max do
            { Если встречается элемент, меньший того, что сейчас
              стоит на позиции m, запоминаем в m его позицию,
              а в x - его значение }
            if x > A[j] then
              begin
                m := j;
                x := A[j];
              end;
            { Меняем местами i-ый элемент, и минимальный из оставшихся -
              m-ый элемент, сохраненный в x }
            A[m] := A[i];
            A[i] := x;
        end;
    end;
 
  { Сортировка "пузырьком" }
  procedure BubbleSort( var A : mas );
    var
      i, j : Integer;
      x : itp;
    begin
      for i := max downto 2 do
        for j := 2 to i do
          if A[j] < A[j - 1] then
            begin
              x := A[j];
              A[j] := A[j - 1];
              A[j - 1] := x;
            end;
    end;
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка пузырьком Авторитет Общие вопросы .NET 4 15.11.2010 19:50
Сортировки фамилий по алфавиту (Выбором, вставкой, обменом) Zhanna5006 Помощь студентам 1 17.01.2010 13:23
Сортировка массива выбором и пузырьком (делфи) kira_truelove Помощь студентам 1 05.12.2009 14:00