专家。 如何将数组从特定索引排序到特定索引,而不是完整数组排序。我正在寻找很多,但没有找到任何解决方案,所以请告诉我如何做到这一点。
答案 0 :(得分:5)
您可以直接在阵列片上调用sort()
:
var array = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
array[2...7].sort()
print(array)
// [9, 8, 2, 3, 4, 5, 6, 7, 1, 0]
答案 1 :(得分:3)
最简单的方法是从数组中提取特定范围,然后用排序数组替换该特定范围。
<强>实施例强>
var array = [1,50,42,15,3,25,63,7,26,8,10,36,78,12]
let sliceSortedArray = array[5...10].sorted()
array.removeSubrange(5...10)
array.insert(contentsOf: sliceSortedArray, at: 5)
print(sliceSortedArray) // [7, 8, 10, 25, 26, 63]
print(array) // [1, 50, 42, 15, 3, 7, 8, 10, 25, 26, 63, 36, 78, 12]
修改由于@Martin R建议您也可以使用replaceSubrange(_:with:)
。
array.replaceSubrange(5...10, with: array[5...10].sorted())
答案 2 :(得分:0)
您可以使用SELECT id, min(amount) as amount
FROM table t
group by id
having min(amount) > 0;
和filter
的组合,它将返回带有已排序元素的新数组。
sort