arg_select 接口

公有接口 arg_select

(规范)


模块过程

私有子程序 arg_select_1_iint8_int8(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int8), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int8), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int8), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int8), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int8), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int8), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint8_int16(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int8), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int16), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int16), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int16), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int16), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int16), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint8_int32(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int8), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int32), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int32), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int32), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int32), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int32), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint8_int64(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int8), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int64), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int64), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int64), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int64), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int64), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint16_int8(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int16), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int8), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int8), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int8), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int8), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int8), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint16_int16(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int16), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int16), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int16), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int16), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int16), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int16), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint16_int32(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int16), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int32), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int32), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int32), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int32), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int32), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint16_int64(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int16), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int64), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int64), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int64), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int64), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int64), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint32_int8(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int32), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int8), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int8), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int8), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int8), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int8), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint32_int16(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int32), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int16), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int16), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int16), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int16), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int16), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint32_int32(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int32), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int32), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int32), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int32), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int32), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int32), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint32_int64(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int32), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int64), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int64), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int64), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int64), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int64), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint64_int8(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int64), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int8), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int8), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int8), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int8), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int8), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint64_int16(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int64), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int16), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int16), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int16), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int16), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int16), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint64_int32(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int64), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int32), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int32), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int32), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int32), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int32), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_iint64_int64(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
整数(kind=int64), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int64), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int64), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int64), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int64), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int64), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_rsp_int8(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
实数(kind=sp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int8), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int8), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int8), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int8), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

整数(kind=int8), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

私有子程序 arg_select_1_rsp_int16(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
实数(kind=sp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

整数(kind=int16), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

整数(kind=int16), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

整数(kind=int16), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

整数(kind=int16), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int16), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

private subroutine arg_select_1_rsp_int32(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
real(kind=sp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

integer(kind=int32), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

integer(kind=int32), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

integer(kind=int32), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

integer(kind=int32), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int32), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

private subroutine arg_select_1_rsp_int64(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
real(kind=sp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

integer(kind=int64), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

integer(kind=int64), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

integer(kind=int64), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

integer(kind=int64), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int64), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

private subroutine arg_select_1_rdp_int8(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
real(kind=dp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

integer(kind=int8), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

integer(kind=int8), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

integer(kind=int8), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

integer(kind=int8), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int8), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

private subroutine arg_select_1_rdp_int16(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
real(kind=dp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

integer(kind=int16), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

integer(kind=int16), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

integer(kind=int16), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

integer(kind=int16), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int16), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

private subroutine arg_select_1_rdp_int32(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
real(kind=dp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

integer(kind=int32), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

integer(kind=int32), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

integer(kind=int32), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

integer(kind=int32), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int32), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

private subroutine arg_select_1_rdp_int64(a, indx, k, kth_smallest, left, right)

arg_select - 在 a(:) 中查找第 k 小的元素的索引

部分源自 Leon Foks 的“Coretran”快速选择实现,https://github.com/leonfoks/coretran

参数

类型 意图可选 属性 名称
real(kind=dp), intent(in) :: a(:)

我们要在其中查找第 k 小元素的数组。

integer(kind=int64), intent(inout) :: indx(:)

a(:) 的索引数组。必须包含从 1:size(a) 的每个整数且仅一次。在输出时,它将被部分排序,使得 all( a(indx(1:(k-1)))) <= a(indx(k)) ) .AND. all( a(indx(k)) <= a(indx( (k+1):size(a) )) )

integer(kind=int64), intent(in) :: k

我们想要第 k 小元素的索引。例如,k=1 导致 a(kth_smallest) = min(a),而 k=size(a) 导致 a(kth_smallest) = max(a)

integer(kind=int64), intent(out) :: kth_smallest

在输出时,包含 a(:) 的第 k 小值的索引

integer(kind=int64), intent(in), 可选 :: left

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。

integer(kind=int64), intent(in), 可选 :: right

如果我们知道:a 的第 k 小元素在 a(indx(left:right)) 中,并且还知道:maxval(a(indx(1:(left-1)))) <= minval(a(indx(left:right))) 以及:maxval(a(indx(left:right))) <= minval(a(indx((right+1):size(a)))),则可以指定一个或两个边界以减少搜索时间。如果我们之前使用不同的 k 调用了子程序(由于 indx(:) 的部分排序方式,请参阅 indx(:) 的文档),则这些约束可用。