Delphi 语言 排序与搜索算法详解

Delphi阿木 发布于 2025-06-18 10 次阅读


Delphi 语言排序与搜索算法详解

Delphi 是一种面向对象的编程语言,由 Borland 公司开发,广泛应用于桌面应用程序、移动应用和Web服务开发。在编程过程中,排序和搜索算法是两个基础且重要的部分。本文将围绕 Delphi 语言,详细介绍几种常见的排序与搜索算法,并附上相应的代码实现。

排序算法

排序算法是将一组数据按照一定的顺序排列的方法。以下是一些常见的排序算法及其 Delphi 代码实现:

1. 冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。

delphi

procedure BubbleSort(var A: array of Integer);


var


I, J: Integer;


Temp: Integer;


begin


for I := Length(A) - 1 downto 0 do


begin


for J := 0 to I - 1 do


begin


if A[J] > A[J + 1] then


begin


Temp := A[J];


A[J] := A[J + 1];


A[J + 1] := Temp;


end;


end;


end;


end;


2. 选择排序(Selection Sort)

选择排序是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

delphi

procedure SelectionSort(var A: array of Integer);


var


I, J, MinIndex: Integer;


Temp: Integer;


begin


for I := 0 to Length(A) - 2 do


begin


MinIndex := I;


for J := I + 1 to Length(A) - 1 do


begin


if A[J] < A[MinIndex] then


MinIndex := J;


end;


if MinIndex <> I then


begin


Temp := A[I];


A[I] := A[MinIndex];


A[MinIndex] := Temp;


end;


end;


end;


3. 插入排序(Insertion Sort)

插入排序是一种简单直观的排序算法。它的工作原理是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。

delphi

procedure InsertionSort(var A: array of Integer);


var


I, J, Key: Integer;


begin


for I := 1 to Length(A) - 1 do


begin


Key := A[I];


J := I - 1;


while (J >= 0) and (A[J] > Key) do


begin


A[J + 1] := A[J];


J := J - 1;


end;


A[J + 1] := Key;


end;


end;


4. 快速排序(Quick Sort)

快速排序是一种高效的排序算法。它采用分而治之的策略,将大问题分解为小问题来解决。快速排序的基本思想是:从数列中挑出一个元素,称为“基准”(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。在这个分区退出之后,该基准就处于数列的中间位置。然后,递归地(分别)在基准前后的子数列中重复这个过程。

delphi

procedure QuickSort(var A: array of Integer; L, R: Integer);


var


I, J, Pivot: Integer;


begin


if L < R then


begin


I := L;


J := R;


Pivot := A[(L + R) div 2];


while I <= J do


begin


while A[I] < Pivot do Inc(I);


while A[J] > Pivot do Dec(J);


if I <= J then


begin


Swap(A[I], A[J]);


Inc(I);


Dec(J);


end;


end;


QuickSort(A, L, J);


QuickSort(A, I, R);


end;


end;


搜索算法

搜索算法是在数据结构中查找特定元素的方法。以下是一些常见的搜索算法及其 Delphi 代码实现:

1. 线性搜索(Linear Search)

线性搜索是一种最简单的搜索算法,它逐个检查数组中的元素,直到找到目标元素或检查完所有元素。

delphi

function LinearSearch(const A: array of Integer; Key: Integer): Integer;


var


I: Integer;


begin


Result := -1;


for I := Low(A) to High(A) do


begin


if A[I] = Key then


begin


Result := I;


Break;


end;


end;


end;


2. 二分搜索(Binary Search)

二分搜索是一种高效的搜索算法,它适用于有序数组。它的工作原理是:首先确定中间元素,如果中间元素等于目标值,则搜索结束;如果中间元素大于目标值,则在左半部分继续搜索;如果中间元素小于目标值,则在右半部分继续搜索。

delphi

function BinarySearch(const A: array of Integer; Key: Integer): Integer;


var


L, R, Mid: Integer;


begin


L := Low(A);


R := High(A);


while L <= R do


begin


Mid := (L + R) div 2;


if A[Mid] = Key then


Exit(Mid)


else if A[Mid] < Key then


L := Mid + 1


else


R := Mid - 1;


end;


Result := -1;


end;


总结

本文详细介绍了 Delphi 语言中的几种常见排序与搜索算法,包括冒泡排序、选择排序、插入排序、快速排序、线性搜索和二分搜索。通过这些算法的实现,我们可以更好地理解排序与搜索的基本原理,并在实际编程中灵活运用。

在实际应用中,选择合适的排序与搜索算法至关重要。对于小规模数据,简单的排序算法如冒泡排序和插入排序可能就足够了;而对于大规模数据,快速排序和归并排序等高效的排序算法则更为合适。同样,对于有序数组,二分搜索比线性搜索更高效。

希望本文能帮助您更好地掌握 Delphi 语言的排序与搜索算法,为您的编程之路添砖加瓦。