用sortids排序中,这个升序排序,排在第一位的应该是最小值Array3[18],但是id31显示排在第一位的是Array3[3],但显然Array3[18]=-3.0613的值小于Array3[3]=-1.2087.
用一个正数例子,然后一个带负数例子,画个图
SortIds的算法原理:https://kdocs.cn/l/cgZrKys94DcZ
所以,Array3[18]的值排序后排在第1位,套用第一条描述,即您想求,排序后ID1数组的第0个元素的值,对应的是Arr排序前第18号,那应该是,ID1即id31数组排序前的id31[18]的值,也就是3。而不是您想象的18。
按照我对这个函数的理解,我总结了下SortIds函数的功能描述为:
1、排序后ID1数组的第N个元素的值是,排序后Arr的第N个元素的值在排序前Arr中的序号所对应的ID1数组排序前该序号所对应的数组元素的值。
2、排序后ID2数组的第N个元素的值是,排序前Arr第N个元素的值在排序后Arr中的序号所对应的的ID2数组排序前该序号所对应的数组元素的值。
您可能对这个函数的功能,还没完全理解。请问您id31[18]在排序前的值是多少?如果是3,那就应该没错。
Array3[18]这个值之前排在第18位,这次排序第1位,所以这次id31[0]应该等于18而不是等于3
您现在公式里,调用SortIds时传入的id31数组是什么?把公式代码贴全一点看看