Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi数组元素字母数字排序顺序?_Delphi - Fatal编程技术网

Delphi数组元素字母数字排序顺序?

Delphi数组元素字母数字排序顺序?,delphi,Delphi,在Delphi中,排序数组的最佳方法是“字母数字” 我在我的应用程序的旧代码中发现了此注释 此数组的元素必须为升序字母数字 排序顺序。” 如果是,原因是什么 -Vas对于如何对数组的元素(或任何集合)进行排序,没有“最佳”方法。排序是一种人性化的特性(事情通常不会被排序),所以我猜这条评论更多地与您的程序的期望有关 更具体地说,其他地方可能还有其他代码部分希望数组元素按字母数字排序。它可以是非常简单的事情,比如将它显示在已经排序的树视图中,这样调用代码就不必首先对数组进行排序 数组表示为连续内存

在Delphi中,排序数组的最佳方法是“字母数字”

我在我的应用程序的旧代码中发现了此注释

此数组的元素必须为升序字母数字 排序顺序。”

如果是,原因是什么

-Vas

对于如何对数组的元素(或任何集合)进行排序,没有“最佳”方法。排序是一种人性化的特性(事情通常不会被排序),所以我猜这条评论更多地与您的程序的期望有关

更具体地说,其他地方可能还有其他代码部分希望数组元素按字母数字排序。它可以是非常简单的事情,比如将它显示在已经排序的树视图中,这样调用代码就不必首先对数组进行排序

数组表示为连续内存分配,因此访问速度很快。在内部,编译器只是调用GetMem,询问SizeOf(Type)*数组大小。通常,元素的排序方式不会影响阵列的性能或内存大小。它必须在程序逻辑中。

对于如何对数组的元素(或该事实的任何集合)进行排序,没有“最佳”方法。排序是一种人性化的特性(事情通常不会被排序),所以我猜这条评论更多地与您的程序的期望有关

更具体地说,其他地方可能还有其他代码部分希望数组元素按字母数字排序。它可以是非常简单的事情,比如将它显示在已经排序的树视图中,这样调用代码就不必首先对数组进行排序

数组表示为连续内存分配,因此访问速度很快。在内部,编译器只是调用GetMem,询问SizeOf(Type)*数组大小。通常,元素的排序方式不会影响阵列的性能或内存大小。它必须在程序逻辑中。

不,没有“最佳”排序方法。这也是为什么有多种分类技术的原因之一。
使用快速排序,您甚至可以提供比较功能,在该功能中,您可以确定最终需要的排序顺序。

不,没有“最佳”排序方法。这也是为什么有多种分类技术的原因之一。

使用快速排序,您甚至可以提供比较功能,确定最终需要的顺序。

当您尝试对数组进行二进制搜索时,以某种方式对数组进行排序非常有用。与其他方法相比,二进制搜索可以非常快。但如果排序错误,搜索将无法找到记录。 保持数组排序的其他原因几乎总是出于外观上的原因,即决定如何将数组发送到某些输出

对数组重新排序的最佳方式取决于数组的长度及其包含的数据类型。在大多数情况下,快速排序算法会给出快速的结果。当您处理字符串列表和其他一些列表时,Delphi在内部使用它。问题是,您真的需要对其进行排序吗?它真的需要保持阵列均匀吗


但保持数组排序的最佳方法是从添加到数组中的第一个元素开始对其排序!通常,我在数组类型周围编写一个包装器,它将负责保持数组的有序性。“Add”方法将搜索数组中小于或等于我要添加的值的最大值。然后在该位置之后插入新项目。对我来说,这是最好的解决办法。(对于大数组,您可以再次使用二进制搜索方法来查找需要插入新记录的位置。这比将记录追加到末尾要慢,但您不必怀疑它是否已排序,因为它是…

当您尝试对数组进行二进制搜索时,以某种方式对数组排序是有用的。二进制搜索与其他方法相比,rch可以非常快。但是如果排序错误,搜索将无法找到记录。 保持数组排序的其他原因几乎总是出于外观上的原因,即决定如何将数组发送到某些输出

对数组重新排序的最佳方法取决于数组的长度及其包含的数据类型。在大多数情况下,快速排序算法会给出快速的结果。当您处理字符串列表和其他一些列表时,Delphi会在内部使用它。问题是,您真的需要对其进行排序吗?它真的需要保持数组不变吗


但保持数组排序的最佳方法是从添加到数组中的第一个元素开始对其进行排序!通常,我会围绕数组类型编写一个包装器,这将负责保持数组的有序性。“add”方法将搜索数组中小于或等于我要添加的值的最大值。然后插入在那个位置之后有一个新的项目。对我来说,那将是最好的解决方案。(对于大数组,您可以再次使用二进制搜索方法来查找需要插入新记录的位置。这比将记录追加到末尾要慢,但您不必怀疑它是否已排序,因为它是…

通常情况下,数组被排序以提供更快的搜索时间。给定长度L的列表,我可以比较h中点(L分区2)然后快速确定是否需要查看较大的一半或较小的一半,然后递归地继续使用此模式,直到没有任何可除的部分或找到匹配项为止。这就是所谓的二进制搜索。如果列表未排序,则此类型的操作不可用,相反,我必须检查列表中的每个项目列表,直到我到达末尾。

通常情况下,数组被排序以提供更快的搜索时间。给定长度为L的列表,我可以与中点(L DIV 2)进行比较,并快速确定是否需要查看较大的一半,或le