您的位置:首页 > 其它

数组冒泡排序

2017-11-18 17:50 218 查看
希望实现一种比较通用的,将以数组的方式组织的一些数据冒泡排序。

USP_UINT32 USP_AlgSortBubbleArray(USP_VOID *pArray, USP_UINT32 uiNum, USP_UINT32 uiElemSize,
USPArrayElemCmpFun pFunCmp)
{
USP_UINT32 i, j;
USP_UINT32 uiRet;
USP_UINT32 uiLoc;
USP_VOID *pObjA;
USP_VOID *pObjB;
USP_VOID *pSwapTemp;

uiRet = uspAlgSortBubbleArrayParamCheck(pArray, uiNum, uiElemSize, pFunCmp);
if (USP_OK != uiRet)
{
USP_LOGOUT(USP_LOG_ERROR, uiRet, "[USP_ALG]: Bubble sort array, param is invalid.");
return uiRet;
}

pSwapTemp = (USP_VOID *)USP_MALLOC((USP_SIZE_T)uiElemSize);

for (i = 0; i < uiNum - 1; i++)
{
for (j = 0; j < (uiNum - 1 - i); j++)
{
uiLoc = j * uiElemSize;
pObjA = (USP_VOID *)(&((USP_CHAR *)pArray)[uiLoc]);
pObjB = (USP_VOID *)(&((USP_CHAR *)pArray)[uiLoc + uiElemSize]);
if (0 < pFunCmp(pObjA, pObjB, uiElemSize))
{
uspAlgSortObjectSwap(pObjA, pObjB, uiElemSize, pSwapTemp);
}
}
}

USP_FREE(pSwapTemp);

return USP_OK;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  冒泡排序