Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ курсовыС, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹...
ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π·Π°ΠΊΠ°Π·. НСдорого!

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ языков программирования Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сортировки массива

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠ΄Π½Ρƒ строку элСмСнтов отсортированного массива Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°. ЀизичСски элСмСнты массива ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько строк экрана. */. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сортировки ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ языки программирования Π‘++, Π’ΡƒΡ€Π±ΠΎ Паскаль, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык Haskell. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎ ΡΡƒΡ‚ΠΈ состоит ΠΈΠ· Π΄Π²ΡƒΡ… простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ svap ΠΈ m_sort. Π’Ρ€Π΅Ρ‚ΡŒΡ функция priznak ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ языков программирования Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сортировки массива (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ Π½Π°ΡΡ‚оящСС врСмя Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡˆΠΊΠΎΠ»Π°Ρ… вСдСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… языках программирования высокого уровня Ρ‚ΠΈΠΏΠ° Pascal ΠΈ Π‘ΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки ΠΈ ΡΠ·Ρ‹ΠΊΠΈ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сортировки ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ языки программирования Π‘++ [4], Π’ΡƒΡ€Π±ΠΎ Паскаль [2], Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык Haskell [3].

Π—Π°Π΄Π°Ρ‡Π°. Π”Π°Π½ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ вСщСствСнный массив, содСрТащий n ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΏΠΎ Π½Π΅ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘++. Π—Π΄Π΅ΡΡŒ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ Π½Π΅ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ элСмСнты.

#include.

#include.

/*.

язык ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ массив На ΡΠ·Ρ‹ΠΊΠ΅ Π‘++ сначала Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π’ Π½ΠΈΡ… содСрТатся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, классы, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚. Π΄. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΠ· Ρ„Π°ΠΉΠ»Π° iostream. h ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ cin ΠΈ cout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, соотвСтствСнно, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…. Из Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° conio. h> ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция int getch (void), которая Π² ΡΡ‚ΠΎΠΌ случаС считываСт символ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. */.

void main () {.

/* main () — это главная функция, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ */.

int n;

// пСрСмСнная n ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся для хранСния количСства элСмСнтов массива.

cout<< «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ количСство элСмСнтов массива: «;

cin>>n;

/* Для Π²Π²ΠΎΠ΄Π° значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ cin ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° iostream. h */.

double *mas=new double [n];

// ОписаниС динамичСского массива вСщСствСнного Ρ‚ΠΈΠΏΠ°.

cout<< «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнты исходного массива: «;

/* Для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡΠΊΡ€Π°Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ cout ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° iostream. h */.

int j;

for (j=0; j.

cout<<οΏ½"Π’Π²Π΅Π΄ΠΈΡ‚Π΅ массив mas ["<<οΏ½"]=";

cin>>mas[j];

}.

// сортировка ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°» [1].

// Π—Π΄Π΅ΡΡŒ описываСм Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

int p=n;

int flag;

double m;

do {.

flag=0;

// Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° flag Π²Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ.

for (j=0; j.

/*Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» для сравнСния сосСдних элСмСнтов массива */.

if (mas[j]>mas [j+1]) {.

m=mas[j]; mas[j]=mas [j+1]; mas [j+1]=m;

/* Если j-ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Π΅ΠΌ j+1-ΠΉ элСмСнт, Ρ‚ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ мСстами эти элСмСнты. ΠŸΡ€ΠΈ этом для удобства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ m */.

flag=1;

/* Если пСрСставили мСстами сосСдниС элСмСнты массива, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° flag Ρ€Π°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ */.

}.

p -;

} while (flag);

/* Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° flag Ρ€Π°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, Ρ‚. Π΅. хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· мСняли мСстами элСмСнты, Ρ‚ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» повторяСм Π΅Ρ‰Ρ‘ Ρ€Π°Π· */.

cout <<οΏ½" отсортированный массив: «;

for (j=0; j.

cout <<<οΏ½"";

/* Π’Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠ΄Π½Ρƒ строку элСмСнтов отсортированного массива Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°. ЀизичСски элСмСнты массива ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько строк экрана. */.

getch ();

// Для удобства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ.

}.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π’ΡƒΡ€Π±ΠΎ Паскаль.

const n=15;

// ОписаниС константы n, которая опрСдСляСт количСство элСмСнт массива.

var x: array [1.n] of real;

// ОписаниС массива Ρ….

m: real;

j, p: integer;

f: boolean;

// ОписаниС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

BEGIN.

writeln ('Π’Π²ΠΎΠ΄ элСмСнтов массива');

for j:=1 to n do.

begin.

write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт массива x [', j, ']= ');

readln (x[j]);

end;

writeln;

p:=n;

repeat.

{Начало внСшнСго Ρ†ΠΈΠΊΠ»Π°}.

f:=true;

{ЛогичСская пСрСмСнная f ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ„Π»Π°Π³Π°}.

for j:=1 to p-1 do.

{Начало Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°}.

if x[j]>x [j+1] then.

{Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… сосСдних элСмСнтов массива}.

begin.

m:=x[j]; x[j]: =x [j+1]; x [j+1]: =m;

f:=false;

end;

{ΠšΠΎΠ½Π΅Ρ† Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°}.

p:=p-1;

until f;

{ΠšΠΎΠ½Π΅Ρ† внСшнСго Ρ†ΠΈΠΊΠ»Π°}.

writeln ('отсортированный массив');

for j:=1 to n do write (x[j]: 2:2,' ');

{Π’Ρ‹Π²ΠΎΠ΄ отсортированных элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»}.

readln;

end.

РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ языкС программирования Haskell. Π’ΠΎΠΎΠ±Ρ‰Π΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Haskell ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ красивыС ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ составлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°» ΠΈ ΠΏΡ€ΠΈΡ‡Π΅ΠΌ эта рСализация Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… Π‘++ ΠΈ Π’ΡƒΡ€Π±ΠΎ Паскаль. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π°Π²Ρ‚ΠΎΡ€ ставит Π·Π°Π΄Π°Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС простыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Haskell ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½Ρ‹Π΅ для учащихся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования. Π‘ ΡΡ‚ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ вмСсто массива Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ список.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎ ΡΡƒΡ‚ΠΈ состоит ΠΈΠ· Π΄Π²ΡƒΡ… простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ svap ΠΈ m_sort. Π’Ρ€Π΅Ρ‚ΡŒΡ функция priznak ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ лишниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

svap [m] f a= (f, a++[m]).

svap (x:y:m) f a= if x>y then svap (x:m) False (a++[y]) else svap (y:m) f (a++[x]).

priznak m = svap m True [].

Ѐункция svap Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π°, Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ — список, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ послС пСрСстановок элСмСнтов. Π€Π»Π°Π³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π±Ρ‹Π»Π° Π»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½Π° пСрСстановка элСмСнтов списка.

Svap ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сравниваСт сосСдниС элСмСнты списка. ΠŸΡ€ΠΈ сравнСнии, Ссли элСмСнт стоящий Π»Π΅Π²Π΅Π΅ большС Ρ‡Π΅ΠΌ ΠΏΡ€Π°Π²Ρ‹ΠΉ, Ρ‚ΠΎ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΈ Π»Π΅Π²Ρ‹ΠΉ элСмСнты ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами. ΠŸΡ€ΠΈ этом Ρ„Π»Π°Π³ устанавливаСтся Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «False». ΠŸΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ наибольший элСмСнт Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ послСднСС мСсто. Если ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ, Ρ‚ΠΎ ΡΠ°ΠΌΡ‹ΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ наибольший элСмСнт Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ послСднСС мСсто. Если ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ svap пСрСстановки элСмСнтов списка Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ Ρ„ункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния (True, список).

m_sort m= if (fst (priznak m)==False) then m_sort (snd (priznak m)).

else snd (priznak m).

Ѐункция m_sort Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ priznak Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ‚Π° Π½Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Ρ‚ΠΈΠΏΠ° (True, список).

Π’Ρ‹Π²ΠΎΠ΄. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярныС Π² ΡˆΠΊΠΎΠ»Π°Ρ… языки программирования. НаиболСС короткая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ языкС программирования Haskell.

язык ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ массив.

  • 1. Π’ΠΈΡ€Ρ‚ Н. Алгоритмы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. — Πœ.: ΠœΠΈΡ€, 1989. — 406 с.
  • 2. Π“Ρ€Π°Π΄ΠΈ Π‘ΡƒΡ‡. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ примСнСния / ΠŸΠ΅Ρ€. c Π°Π½Π³Π». — Πœ.: ΠšΠΎΠ½ΠΊΠΎΡ€Π΄, 1992. — 519 c.
  • 3. Π₯СндСрсон П. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ. М.: ΠœΠΈΡ€, 2003. 371 с.
  • 4. Π₯усаинов, И. Π“. РСшСниС Π·Π°Π΄Π°Ρ‡ Π½Π° Π­Π’Πœ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ / Π‘Ρ‚Π΅Ρ€Π»ΠΈΡ‚Π°ΠΌΠ°ΠΊ: БтСрлитамакский Ρ„ΠΈΠ»ΠΈΠ°Π» Π‘Π°ΡˆΠ“Π£, 2014. 110 с.
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ