Пример на Паскале:
Код | program QuickSort;
const MAX = 5;
type TArray = array [1..MAX] of integer;
procedure Swap(var Arr : TArray; pos1, pos2 : integer); var tmp : integer; begin tmp := Arr[pos1]; Arr[pos1] := Arr[pos2]; Arr[pos2] := tmp; end;
procedure Sort(var Arr : TArray; mine, maxe: integer); var i, j, n : integer; begin if mine >= maxe then exit; n := Arr[mine]; i := mine - 1; j := maxe + 1; while i < j do begin repeat inc(i); until Arr[i] >= n; repeat dec(j); until Arr[j] <= n; if i < j then swap(arr, i, j); end; Sort(Arr, mine, j); Sort(Arr, j + 1, maxe); end;
var iArray : TArray; i : integer; Begin for i := 1 to MAX do begin write('Enter next element: '); readln(iArray[i]); end; Sort(iArray, 1, MAX); writeln('After sort: '); for i := 1 to MAX do writeln(iArray[i]); readln; End.
|
Пример на Visual Basic:
Код | Option Explicit Option Base 1 Const Max = 5 Dim A(1 To Max) As Long
Sub Swap(ByRef Arr() As Long, ByVal Pos1 As Long, ByVal Pos2 As Long) Dim Tmp As Long Tmp = A(Pos1) A(Pos1) = A(Pos2) A(Pos2) = Tmp End Sub
Sub Sort(ByRef Arr() As Long, ByVal MinE As Long, ByVal MaxE As Long) Dim I, J, N As Long If MinE >= MaxE Then Exit Sub N = Arr(MinE) I = MinE - 1 J = MaxE + 1 Do While I < J Do I = I + 1 Loop Until Arr(I) >= N Do J = J - 1 Loop Until Arr(J) <= N If I < J Then Call Swap(Arr, I, J) Loop Call Sort(Arr, MinE, J) Call Sort(Arr, J + 1, MaxE) End Sub
'Пример использования - по нажатию кнопки Private Sub Command1_Click() Dim I As Long For I = 1 To Max A(I) = CLng(InputBox("Введите элемент:")) Next I Call Sort(A, 1, Max) 'Массив отсортирован. Можно вывести данные, например, в ListBox For I = 1 To Max List1.AddItem CStr(A(I)) Next I End Sub
|
Авторы:
http://vingrad.ru/@Rrader - пример на VB. http://vingrad.ru/@THandle - пример на Паскале.
|