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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 21:53   #1
Алексей_xXx
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 54
Печаль Нужна другая реализация пузырька. Помогите очень нужно, завтра сдавать...

Народ помогите изменить программу, а точнее процедуру сортировки Пузырьком. Нужна другая реализация пузырька. Помогите очень нужно, завтра сдавать...

ВОТ КОД

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit2: TEdit;
    Memo3: TMemo;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Button2: TButton;
    Button3: TButton;
    Memo4: TMemo;
    Memo5: TMemo;
    Memo6: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
n=10;
var
d,k,i,temp,bound:integer;
x:array[1..n] of integer;
begin
randomize;
memo1.Clear;
memo2.Clear;

for i:=1 to n do
         x[i]:=random(100);
for k:=1 to n do
    memo1.Lines.Add(IntToStr(x[k]));
bound:=n;
  d:=0;
while bound>1 do
begin
{ShowMessage('qwa');}
 for i:=1 to bound-1 do
   if x[i]>x[i+1] then
     begin
      temp:=x[i];
      x[i]:=x[i+1];
      x[i+1]:=temp;
          inc(d);
     end;
  bound:=bound-1;

end;

   edit1.Text:=IntToStr(n*n);  //оценка сложности
    edit2.Text:=IntToStr(d);
for k:=1 to n do
    memo2.Lines.Add(IntToStr(x[k]));

end; {end of procedure}


procedure TForm1.FormShow(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
memo3.Clear;
memo4.Clear;
memo5.Clear;
memo6.Clear;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;

end;

procedure TForm1.Button2Click(Sender: TObject);

   const
    SIZE=10; // размер массива var
     var
a:array[1..SIZE]of integer; //массив
d1,i,k,bound:integer;
buf:integer; { буфер, используемый при обмене элементов массива }

   begin
for i:=1 to SIZE do
a[i]:=StrToInt(Memo3.Lines[i-1]); // строки Memo пронумерованы с нуля

 bound:=SIZE;
 d1:=0;    //сортировка
  while bound>1 do
  begin
for k:=1 to bound-1 do
if a[k]>a[k+1] then
begin // обменяем k-й и k+1-й элементы
buf:=a[k]; a[k]:=a[k+1]; a[k+1]:=buf;

      inc(d1);   //счетчик практической

  end;
    bound:=bound-1;
       end;

   for i:=1 to SIZE do   //вывод
             memo4.Lines.Add(IntToStr(a[i]));


edit3.Text:=IntToStr(SIZE*SIZE);  //оценка сложности
edit4.Text:=IntToStr(d1);

end;

procedure TForm1.Button3Click(Sender: TObject);

   const
    SIZE=10; // размер массива var
     var
a:array[1..SIZE]of integer; //массив
d2,i,k,bound:integer;
buf:integer; { буфер, используемый при обмене элементов массива }

   begin
for i:=1 to SIZE do
a[i]:=StrToInt(Memo6.Lines[i-1]);
   d2:=0;
 bound:=SIZE;     //сортировка
  while bound>1 do
  begin
for k:=1 to bound-1 do
if a[k]<a[k+1] then
begin // обменяем k-й и k+1-й элементы
buf:=a[k]; a[k]:=a[k+1]; a[k+1]:=buf;

      inc(d2);   //счетчик практической

  end;
    bound:=bound-1;
       end;

   for i:=1 to SIZE do   //вывод
             memo5.Lines.Add(IntToStr(a[i]));


edit5.Text:=IntToStr(SIZE*SIZE);  //оценка сложности
edit6.Text:=IntToStr(d2);

end;

end.

Последний раз редактировалось Stilet; 28.05.2009 в 09:12.
Алексей_xXx вне форума
Старый 27.05.2009, 22:27   #2
Алексей_xXx
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 54
Смущение Связать сортировку с основным кодом программы!

Народ помогите изменить программу, а точнее процедуру сортировки Пузырьком. Другую реализация сортировки нашел , она в самом низу, а вот заменить не могу потому что связать не получаеться сортировку со всем остальным. Помогите очень нужно, завтра сдавать...

ВОТ КОД ДРУГОГО ПУЗЫРЬКА!!

Код:
type
 TIntVec = array of Integer; 
...
procedure BubbleSort(var a: TIntVec);
 var i,p,n: Integer; b: boolean;
begin
 n:= Length(a)-1;
 if n < 1 then exit;
 repeat
  b:= true;
  Dec(n);
  for i:= 0 to n do
   if a[i] > a[i+1] then
    begin
     p:= a[i];
     a[i]:= a[i+1];
     a[i+1]:= p;
     b:= false;
    end;
 until b;
end;

Последний раз редактировалось Stilet; 28.05.2009 в 09:13.
Алексей_xXx вне форума
Старый 28.05.2009, 01:14   #3
бедный_студент
Форумчанин
 
Регистрация: 09.02.2009
Сообщений: 143
По умолчанию

что то какой то пузырек навороченный на бейсике всего 3 строки занимает вместе с ифом

и вообще всего 3 метода сортировки существует насколько я знаю, а тому кто придумает еще какой то более эффективный, похвала и всякие почести ...

Последний раз редактировалось Stilet; 28.05.2009 в 09:14.
бедный_студент вне форума
Старый 28.05.2009, 09:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Насколько понял тебе нужно так:
Код:
procedure TForm1.Button2Click(Sender: TObject);

   const
    SIZE=10; // размер массива var
     var
a:array[1..SIZE]of integer; //массив
d1,i,k,bound:integer;
buf:integer; { буфер, используемый при обмене элементов массива }

   begin
for i:=1 to SIZE do
a[i]:=StrToInt(Memo3.Lines[i-1]); // строки Memo пронумерованы с нуля

BubbleSort(a);

   for i:=1 to SIZE do   //вывод
             memo4.Lines.Add(IntToStr(a[i]));


edit3.Text:=IntToStr(SIZE*SIZE);  //оценка сложности
edit4.Text:=IntToStr(d1);

end;
Только всетки я бы обьявил по другом:
Код:
procedure BubbleSort(var a: array of integer);
Цитата:
и вообще всего 3 метода сортировки существует
Неа. гораздо больше...
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите((( Завтра сдавать!!!(( ApXoH Паскаль, Turbo Pascal, PascalABC.NET 5 05.05.2009 23:35
Помогите! Мне завтра сдавать!!! Loren Помощь студентам 1 24.02.2009 15:49
помогите срочно завтра сдавать... Defer Помощь студентам 2 25.01.2009 20:01