/// <summary> /// 数组排序 /// </summary> /// <typeparam name="valueType">数据类型</typeparam> /// <param name="values">待排序数组</param> /// <param name="getKey">排序键值获取器</param> /// <param name="startIndex">起始位置</param> /// <param name="count">排序数据数量</param> /// <param name="fixedIndex">索引位置</param> /// <returns>排序后的数组</returns> private static valueType[] getSort/*Compare[0]*//*Compare[0]*/ <valueType>(valueType[] values, Func <valueType, /*Type[0]*/ ulong /*Type[0]*/> getKey, int startIndex, int count, /*Type[1]*/ ULongSortIndex /*Type[1]*/ *fixedIndex) { /*Type[1]*/ ULongSortIndex /*Type[1]*/.Create(fixedIndex, values, getKey, startIndex, count); sort/*Compare[0]*//*Compare[0]*/ (fixedIndex, fixedIndex + count - 1); return /*Type[1]*/ (ULongSortIndex /*Type[1]*/.Create(fixedIndex, values, count)); }
/// <summary> /// 数组排序 /// </summary> /// <typeparam name="valueType">数据类型</typeparam> /// <param name="values">待排序数组</param> /// <param name="getKey">排序键值获取器</param> /// <param name="fixedIndex">索引位置</param> /// <returns>排序后的数组</returns> private static valueType[] getSort/*Compare[0]*//*Compare[0]*/ <valueType>(valueType[] values, Func <valueType, /*Type[0]*/ ulong /*Type[0]*/> getKey, /*Type[1]*/ ULongSortIndex /*Type[1]*/ *fixedIndex) { /*Type[1]*/ ULongSortIndex /*Type[1]*/.Create(fixedIndex, values, getKey); sort/*Compare[0]*//*Compare[0]*/ (fixedIndex, fixedIndex + values.Length - 1); return /*Type[1]*/ (ULongSortIndex /*Type[1]*/.Create(fixedIndex, values, values.Length)); }
/// <summary> /// 数组排序 /// </summary> /// <typeparam name="valueType">数据类型</typeparam> /// <param name="values">待排序数组</param> /// <param name="getKey">排序键值获取器</param> /// <param name="startIndex">起始位置</param> /// <param name="count">排序数据数量</param> /// <param name="fixedIndex">索引位置</param> /// <returns>排序后的数组</returns> private static valueType[] getSortDesc <valueType>(valueType[] values, Func <valueType, ulong> getKey, int startIndex, int count, ULongSortIndex *fixedIndex) { ULongSortIndex.Create(fixedIndex, values, getKey, startIndex, count); sortDesc(fixedIndex, fixedIndex + count - 1); return(ULongSortIndex.Create(fixedIndex, values, count)); }
/// <summary> /// 数组排序 /// </summary> /// <typeparam name="valueType">数据类型</typeparam> /// <param name="values">待排序数组</param> /// <param name="getKey">排序键值获取器</param> /// <param name="fixedIndex">索引位置</param> /// <returns>排序后的数组</returns> private static valueType[] getSortDesc <valueType>(valueType[] values, Func <valueType, ulong> getKey, ULongSortIndex *fixedIndex) { ULongSortIndex.Create(fixedIndex, values, getKey); sortDesc(fixedIndex, fixedIndex + values.Length - 1); return(ULongSortIndex.Create(fixedIndex, values, values.Length)); }