Sorts all elements of a vector using radix sorting algorithm.
IppStatus ippsSortRadixAscend_8u_I(Ipp8u* pSrcDst, Ipp8u* pTmp, Ipp32s len);
IppStatus ippsSortRadixAscend_16u_I(Ipp16u* pSrcDst, Ipp16u* pTmp, Ipp32s len);
IppStatus ippsSortRadixAscend_16s_I(Ipp16s* pSrcDst, Ipp16s* pTmp, Ipp32s len);
IppStatus ippsSortRadixAscend_32u_I(Ipp32u* pSrcDst, Ipp32u* pTmp, Ipp32s len);
IppStatus ippsSortRadixAscend_32s_I(Ipp32s* pSrcDst, Ipp32s* pTmp, Ipp32s len);
IppStatus ippsSortRadixAscend_32f_I(Ipp32f* pSrcDst, Ipp32f* pTmp, Ipp32s len);
IppStatus ippsSortRadixAscend_64f_I(Ipp64f* pSrcDst, Ipp64f* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_8u_I(Ipp8u* pSrcDst, Ipp8u* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_16u_I(Ipp16u* pSrcDst, Ipp16u* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_16s_I(Ipp16s* pSrcDst, Ipp16s* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_32u_I(Ipp32u* pSrcDst, Ipp32u* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_32s_I(Ipp32s* pSrcDst, Ipp32s* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_32f_I(Ipp32f* pSrcDst, Ipp32f* pTmp, Ipp32s len);
IppStatus ippsSortRadixDescend_64f_I(Ipp64f* pSrcDst, Ipp64f* pTmp, Ipp32s len);
pSrcDst |
Pointer to the source and destination vector. |
pTmp |
Pointer to the temporary vector. |
len |
Number of elements in the vector |
The functions ippsSortRadixAscend and ippsSortRadixDescend are declared in the ipps.h file. These functions rearrange all elements of the source vector pSrcDst in the ascending or descending order, respectively, using “radix sort” algorithm, and store the result in the destination vector pSrcDst. Temporary vector pTmp is required by the algorithm, its size must be equal to the the size of the source vector.
The example below shows how to call the function ippsSortRadixAscend_8u_I.
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when the pSrcDst or pTmp is NULL. |
ippStsSizeErr |
Indicates an error when len is less than or equal to 0. |
void func_sort()
{
Ipp8u i, vec[10] = {0,2,4,5,1,8,9,4,6,7}, tmp[10];
IppStatus status;
status = ippsSortRadixAscend_8u_I(vec,tmp,10);
if(ippStsNoErr != status)
printf("IPP Error: %s",ippGetStatusString(status));
else {
for(i=0; i<10; i++) printf("%d ",vec[i]); printf("\n");
}
}
Result
0 1 2 4 4 5 6 7 8 9
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.