在delphi中实现快速排序算法

编程中的一个常见问题是按某种顺序(升序或降序)对值数组进行排序。...

编程中的一个常见问题是按某种顺序(升序或降序)对值数组进行排序。

Trouble shooting tech is my specialty Trouble shooting tech is my specialty

虽然有许多“标准”排序算法,但快速排序是最快的算法之一。快速排序通过使用分而治之策略将列表分为两个子列表进行排序。

快速排序算法

基本概念是选择数组中的一个元素,称为枢轴。围绕轴,其他元素将重新排列。除了轴以外的所有内容都将移动到轴的左侧-到左侧分区中。大于枢轴的所有内容都将进入右侧分区。此时,每个分区都是递归的“快速排序”。

以下是在Delphi中实现的快速排序算法:

procedure QuickSort(var A: array of Integer; iLo, iHi: Integer) ; var Lo, Hi, Pivot, T: Integer; begin Lo := iLo; Hi := iHi; Pivot := A[(Lo + Hi) div 2]; repeat while A[Lo] < Pivot do Inc(Lo) ; while A[Hi] > Pivot do Dec(Hi) ; if Lo <= Hi then begin T := A[Lo]; A[Lo] := A[Hi]; A[Hi] := T; Inc(Lo) ; Dec(Hi) ; end; until Lo > Hi; if Hi > iLo then QuickSort(A, iLo, Hi) ; if Lo < iHi then QuickSort(A, Lo, iHi) ; end;

用法:

var intArray : array of integer; begin SetLength(intArray,10) ; //Add values to intArray intArray[0] := 2007; ... intArray[9] := 1973; //sort QuickSort(intArray, Low(intArray), High(intArray)) ;

注意:实际上,当传递给它的数组已经接近排序时,快速排序会变得非常慢。

Delphi附带了一个演示程序,名为“thrddemo”,位于“Threads”文件夹中,它显示了另外两种排序算法:冒泡排序和选择排序。

  • 发表于 2021-10-20 23:46
  • 阅读 ( 375 )
  • 分类:编程

你可能感兴趣的文章

6款人工智能应用,助你实现目标

...实现业务目标,但人工智能可以帮助你在工作或日常生活中实现个人目标。这里有六个人工智能应用程序,你现在可以使用它来帮助你实现几乎任何你能想到的目标。 ...

  • 发布于 2021-03-14 14:19
  • 阅读 ( 278 )

如何在macos中实现快速用户切换

如果你与家人或室友共享一台Mac,你会想设置多个macOS用户帐户。每个帐户都有自己的文档、浏览器历史记录和保存的密码。 相关:如何在macOS中设置多个用户帐户 从安全角度来看,设置多个帐户是一个好主意,即使在与信任...

  • 发布于 2021-04-06 20:41
  • 阅读 ( 169 )

微软新的图像标题人工智能将有助于在word、outlook和其他应用程序中实现易访问性

微软开发了一种新的图像字幕算法,这种算法在某些有限的测试中超过了人类的精确度。该人工智能系统已被用于更新该公司为视障人士开发的助手应用程序Seeing AI,并将很快被整合到其他微软产品中,如Word、Outlook和PowerPoint。...

  • 发布于 2021-04-17 14:17
  • 阅读 ( 179 )

快速排序(quick sort)和合并排序(merge sort)的区别

...大的算法是分治算法,它是一种基于多分支递归的算法。快速排序和合并排序是基于分治算法的两种常用算法。   什么是快速排序(quick sort)? 快速排序是一种基于分而治之方法的高效排序算法,类似于将问题分解为两个子问...

  • 发布于 2021-06-25 22:32
  • 阅读 ( 438 )

气泡排序(bubble sort)和选择排序(selection sort)的区别

...的开头。 排序是按排列顺序排列数据的方法。它有助于快速搜索数据元素。排序算法在机器学习和大数据分析等多个领域都很有用,可以用来处理大数据集。有各种排序算法。气泡排序和选择排序是其中的两种。 覆盖的关键领...

  • 发布于 2021-07-01 07:25
  • 阅读 ( 563 )

快速排序(quicksort)和合并排序(merge sort)的区别

快速排序和合并排序之间的主要区别在于,快速排序通过将每个元素与称为枢轴的元素进行比较来对元素进行排序,而合并排序则将数组一次又一次地划分为两个子数组,直到只剩下一个元素。 排序是按特定顺序排列数据的方...

  • 发布于 2021-07-01 07:27
  • 阅读 ( 308 )

气泡排序(bubble sort)和插入排序(insertion sort)的区别

...序适合于对小数据集进行排序。与其他高级排序算法(如快速排序和合并排序)相比,两者的效率都较低。冒泡排序和**排序的主要区别在于,冒泡排序通过检查相邻的数据元素并在它们顺序错误时交换它们来执行排序,而**排...

  • 发布于 2021-07-01 17:55
  • 阅读 ( 333 )

气泡排序(bubble sort)和选择排序(selection sort)的区别

冒泡排序和选择排序的区别在于,冒泡排序是一种比较相邻元素然后交换的排序算法,而选择排序是一种选择最大数并与最后一个数交换的排序算法。 计算机程序设计是一个非常宽泛的术语,在计算机程序设计中,基本概念是...

  • 发布于 2021-07-08 11:04
  • 阅读 ( 318 )

快速排序(quick sort)和合并排序(merge sort)的区别

主要区别 快速排序和合并排序的关键区别在于,快速排序是用于数组的排序算法,而合并排序是用于分而治之规则的排序算法。 排序是按任意顺序排列元素;排序是计算机程序设计中最重要的概念之一。两个最重要的算法用...

  • 发布于 2021-07-08 11:07
  • 阅读 ( 312 )

快速排序(quick sort)和气泡排序(bubble sort)的区别

...……因此,当n的值很大时,它会产生巨大的时间问题。 快速排序如果o(n logn)有时间复杂度,这可能比普通技术效率低,但它产生的结果要快得多。 3.编码:Undoubtedly, the creation of 气泡排序是最简单的排序算法方法之一,根据...

  • 发布于 2021-07-12 23:42
  • 阅读 ( 347 )
fbsndief8
fbsndief8

0 篇文章

相关推荐