中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

SortIndex

带索引的向量排序,包含升序和降序。如果参与排序的向量值有相同值,则这些相同值所对应的索引不排序,即排序算法是不稳定的,对相同值排序,排序后的索引顺序与排序之前的顺序不同。

函数接口声明如下:
  • 整型数的升序排序:

    HmppResult HMPPS_SortIndexAscend_8u_I(uint8_t* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexAscend_16u_I(uint16_t* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexAscend_16s_I(int16_t* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexAscend_32s_I(int32_t* srcDst, int32_t dstIdx, int32_t len);

  • 浮点数的升序排序:

    HmppResult HMPPS_SortIndexAscend_32f_I(float* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexAscend_64f_I(double* srcDst, int32_t dstIdx, int32_t len);

  • 整型数的降序排序:

    HmppResult HMPPS_SortIndexDescend_8u_I(uint8_t* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexDescend_16u_I(uint16_t* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexDescend_16s_I(int16_t* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexDescend_32s_I(int32_t* srcDst, int32_t dstIdx, int32_t len);

  • 浮点数的降序排序:

    HmppResult HMPPS_SortIndexDescend_32f_I(float* srcDst, int32_t dstIdx, int32_t len);

    HmppResult HMPPS_SortIndexDescend_64f_I(double* srcDst, int32_t dstIdx, int32_t len);

参数

参数名

描述

取值范围

输入/输出

srcDst

指向原址操作向量的指针。

非空

输入/输出

dstIdx

指向排序后索引的指针。

非空

输出

len

向量长度。

(0, INT_MAX]

输入

返回值

  • 成功:返回HMPP_STS_NO_ERR
  • 失败:返回错误码。

错误码

错误码

描述

HMPP_STS_NULL_PTR_ERR

srcDst为空指针。

HMPP_STS_SIZE_ERR

len小于或等于0。

示例

#define BUFFER_SIZE_T 9
void Sort_Example() {
    uint8_t src[BUFFER_SIZE_T] = {255, 5, 254, 0, 253, 1, 252, 2, 251};
    int32_t *dstIdx = HMPPS_Malloc_32s(BUFFER_SIZE_T);
    int32_t i;
    HmppResult result = HMPPS_SortAscend_8u_I(src, dstIdx ,BUFFER_SIZE_T);
    if (result == HMPP_STS_NO_ERR) {
        printf("result = %d\n", result);
        printf("dst = ");
        for (i = 0; i < BUFFER_SIZE_T; i++) {
            printf("%d ", src[i]);
        }
        printf("\n");
        printf("dstIdx = ");
        for (i = 0; i < BUFFER_SIZE_T; i++) {
            printf("%d ", dstIdx[i]);
        }
        printf("\n");
    }
    HMPPS_Free(dstIdx);
}

运行结果:

result = 0
dst = 0 1 2 5 251 252 253 254 255
dstIdx = 3 5 7 1 8 6 4 2 0