Berikut adalah procedur sorting (pengurutan data) dalam bahasa pascal.

Pada halaman ini, akan dipelajari mengenai konsep algoritme/logika dari pengurutan data yang meliputi:

  • Direct Insertion Sort
  • Bubble Sort
  • Insertion Sort
  • Q Sort
  • Quick Sort

Data arsip dari Die Coding, silakan digunakan dan diubah sesuka hati, semoga bermanfaat.

Procedure DirectInsertionSort(angka : Array of Integer; n : Integer);
Var
	i, j, temp : Integer;

Begin
	For i := 2 to n-1 do
	Begin
		temp := angka[i];
		j := i;
		While ((j > 1) AND (angka[j-1] > temp)) do
		Begin
			angka[j] := angka[j-1];
			j := j - 1;
		End;
		angka[j] := temp;
	End;
End;

Procedure BubbleSort(angka : Array of Integer; n : Integer);
Var
	i, j, temp : Integer;

Begin
	For i := n-1 DownTo 1 do
		For j := 2 to i do
			If (angka[j-1] > angka[j]) Then
			Begin
				temp := angka[j-1];
				angka[j-1] := angka[j];
				angka[j] := temp;
			End;

End;

Procedure InsertionSort(angka : Array of Integer; n : Integer);
Var
	i, j, temp : Integer;


Begin
	For i := 2 to n-1 do
	Begin
		temp := angka[i];
		j := i;
		While ((j > 1) AND (angka[j-1] > temp)) do
		Begin
			angka[j] := angka[j-1];
			j := j - 1;
		End;
		angka[j] := temp;
	End;
End;

Procedure QSort(angka : Array of Integer; kiri : Integer; kanan : Integer);
Var 
	temp, kiri_, kanan_ : Integer;

Begin
	kiri_ := kiri;
	kanan_ := kanan;
	temp := angka[kiri];

	While (kiri < kanan) do
	Begin
		While ((angka[kanan] >= temp) AND (kiri < kanan)) do
			kanan := kanan - 1;

		If (kiri <> kanan) Then
		Begin
			angka[kiri] := angka[kanan];
			kiri := kiri + 1;
		End;

		While ((angka[kiri] <= temp) AND (kiri < kanan)) do
			kiri := kiri + 1;

		If (kiri <> kanan) Then
		Begin
			angka[kanan] := angka[kiri];
			kanan := kanan - 1;
		End;
	End;

	angka[kiri] := temp;
	temp := kiri;
	kiri := kiri_;
	kanan := kanan_;

	If (kiri < temp) Then
		QSort(angka, kiri, temp-1);

	If (kanan > temp) Then
		QSort(angka, temp+1, kanan);
End;

Procedure QuickSort(angka : Array of Integer; n : Integer);
Begin
	QSort(angka, 0, n-1);
End;