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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2014, 05:06   #1
Natasha2332
Пользователь
 
Регистрация: 16.12.2013
Сообщений: 31
По умолчанию Сравнить алгоритмы сортировок прямым обменом (пузырьком) и выбором...

You need to implement and compare performance of two algorithms: Simple Exchange (Bubble) and Simple Selection sort. In order to compare algorithms performance you need to count number of comparisons and swaps using both algorithms on the same number chain example.
The Number chain for sorting is stored in the file. Ask this file name for the user and load data into array. Input file restrictions: the file contains integer numbers in range –10 000..10 000. Number of integers is limited by 10 000. One line in the file contains one integer value. The result of sorting should be saved in the output file.
Please provide the ability for the user to choose sorting algorithm.
Counted numbers of comparisons and swaps should be printed to the console screen.


Your program should consist of following procedures:

1. Reading data array from the file:
procedure ReadArray(FileName: string; var A: array of integer; var N: integer);
FileName – file name,
A – array,
N – number of elements in the array.

2. Writing of the (sorted) array to the file:
procedure WriteArray(FileName: string; var A: array of integer; N: integer);
FileName – file name,
A – array,
N – number of elements in array.

3. Array sorting procedures:
procedure SimpleExchange(var A: array of integer; var N: integer; var S, P: integer);
procedure SimpleSelection(var A: array of integer; var N: integer; var S, P: integer);
A – array to be sorted,
N – number of elements in array,
S - number of accomplished comparisons,
P - number of accomplished swaps.

Перевод.
Вам нужно реализовать и сравнить производительность двух алгоритмов : Простой обмен ( Bubble ) и простой сортировки Выбор . Для того чтобы сравнить производительность алгоритмов необходимо подсчитать количество сравнений и свопы с использованием как алгоритмы на том же примере число цепи.
Цепь номер для сортировки хранятся в файле . Задайте этот имя файла для пользователя и загрузки данных в массиве. Ограничения входного файла: файл содержит целые числа в диапазоне от -10 000 .. 10 000 . Количество целых чисел ограничивается 10 000. Один строка в файле содержит одно целое число. Результат сортировки должны быть сохранены в выходном файле .
Пожалуйста, способность для пользователя, чтобы выбрать алгоритм сортировки .
Наработанных количество сравнений и свопы должны быть напечатаны на экран консоли .


Ваша программа должна состоять из следующих процедур:

1 . Чтение массива данных из файла :
Процедура ReadArray ( FileName : String ; вар: массив целого ; вар N : целое число) ;
FileName - имя файла ,
- Массив,
N - количество элементов в массиве .

2 . Написание из (сортировка ) массива в файл :
Процедура WriteArray ( FileName : String ; вар: массив целого , N : целое число) ;
FileName - имя файла ,
- Массив,
N - количество элементов в массиве.

3 . Сортировка процедуры Массив :
Процедура SimpleExchange (вар: массив целого ; вар N : целое ; вар S, P : целое число) ;
Процедура SimpleSelection (вар: массив целого ; вар N : целое ; вар S, P : целое число) ;
- Массив должен быть отсортирован ,
N - количество элементов в массиве ,
S - количество выполненных сравнений ,
P - количество совершенных свопов .

перевод google можете помочь заранее спасибо!
Natasha2332 вне форума Ответить с цитированием
Старый 02.01.2014, 10:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Наташа, я хотел бы уточнить. Наработки есть? Какого рода помощь Вы ожидаете получить?

Целиком готовую программу? Так тогда это не помощь, а "сделайте всё за меня". И надеяться Вам придётся на чудо в виде доброго форумчанина, который в качестве новогоднего подарка напишет Вам полностью всё. Или обращаться во фриланс, там, конечно, придётся вознаграждение выплачивать фрилансеру, зато результат Вы получите, не надо будет ждать чуда.
А можете написать самостоятельно, что непонятно/не получается - тут помогут.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.01.2014, 11:33   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Выкладывать на форум гугл перевод - это неуважение..
Цитата:
Simple Selection sort
Есть, как минимум, 3 варианта : без фишек.. с бинарным поиском.. бинарный + Move
Poma][a вне форума Ответить с цитированием
Старый 02.01.2014, 12:22   #4
Natasha2332
Пользователь
 
Регистрация: 16.12.2013
Сообщений: 31
По умолчанию

Код:
Const
  nmax=10000;
type
  myarray = array[1..nmax] of integer;
var
  FIN, SFN : string;
  FI, SF : Text;
  A: myarray;
  N, L, q, c, P, S: integer;
  Pstr, Sstr: string;

procedure ReadArray(FileName: string; var A: myarray; var N: integer);
        var
          i, e: integer;
          x: string;
        Begin
          i:=1;
          Case q of
            100 : Assign(FI, 'r100.txt');
            1000 : Assign(FI, 'r1000.txt');
            10000 : Assign(FI, 'r10000.txt');
            end;
          Reset(FI);
          Repeat
            readln(FI, x);
            val(x,A[i],e);
            i:=i+1;
          Until Eof(FI);
        Close(FI);
        end;

procedure WriteArray(SFN: string; var A: myarray; N: integer);
        var
          i: integer;
        Begin
            Assign(SF,'new already sorted file.txt');
            Rewrite(SF);
            for i:=1 to L do begin
                writeln(SF, A[i]);
                writeln(A[i]:4);
                end;
            str(P, Pstr);
            str(S, Sstr);
            writeln(SF, Pstr);
            write(SF, Sstr);
            Close(SF);
        end;


procedure Bubblesort(var A: myarray; var N: integer; var S:integer; var P: integer);
        var
          swapped : boolean;
          i: integer;
          temp: integer;
        begin
          repeat
            swapped := false;
            for i:= 1 to (N-1) do begin
              S:=S+1;
              if (A[i] > A[i+1]) then begin
                  temp:=A[i];
                  A[i]:=A[i+1];
                  A[i+1]:=temp;
                  P:=P+1;
                  swapped := true;
                  end;
              end;
              N:=N-1;
          until (N=1) and (swapped = false);
        end;

procedure SimpleSelection(var A: myarray; var N: integer; var S: integer; var P: integer);
        var
          i, j, min: integer;
          temp: integer;
        begin
          for i:= 1 to N-1 do begin
             min:= i;
             for j:= i+1 to N  do begin
                if A[j]<A[min] then min:=j;
                S:=S+1;
                end;
             if min<>i then begin
                temp:=A[i];
                A[i]:=A[min];
                A[min]:=temp;
                P:=P+1;
                end;
            end;
          end;


Begin
    P:=0;
    S:=0;
    writeln('WELCOME TO THE BUBBLE & SIMPLE SELECTION SORTING PROGRAM!!!');
    readln;
    writeln('Enter the number of elements in the given (.txt) file: ');
    readln(q);
    writeln('Bubble or Selection sort?');
    writeln('Press 0 or 1');
    readln(c);
    Case q of
      100:N:=100;
      1000:N:=1000;
      10000:N:=10000;
      end;
    L:=N;
    ReadArray(FIN, A, N);
    Case c of
      0 : Bubblesort(A, N, S, P);
      1 : SimpleSelection(A, N, S, P);
      end;
    WriteArray(SFN, A, N);
    writeln('SWAPS: ',P);
    writeln('COMPARISONS: ',S);
    writeln('THE END');
    writeln('Press Enter button for closing the operation');
    readln;
end.
У меня вышло так.

Последний раз редактировалось Stilet; 02.01.2014 в 22:01.
Natasha2332 вне форума Ответить с цитированием
Старый 02.01.2014, 20:20   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
Case q of
100:N:=100;
1000:N:=1000;
10000:N:=10000;
end;
смущает меня этот кусок кода
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 15.01.2014, 23:39   #6
Natasha2332
Пользователь
 
Регистрация: 16.12.2013
Сообщений: 31
По умолчанию

а возможно сделать программу как то покароче?
Natasha2332 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка прямым выбором kati412 Помощь студентам 0 13.12.2012 14:31
Сортировка пузырьком, выбором, вставкой. vadiprog Помощь студентам 3 28.11.2011 17:05
Сортировки фамилий по алфавиту (Выбором, вставкой, обменом) Zhanna5006 Помощь студентам 1 17.01.2010 13:23
Сортировка массива выбором и пузырьком (делфи) kira_truelove Помощь студентам 1 05.12.2009 14:00