您的位置:首页 > 其它

直接插入排序

2008-07-15 21:28 246 查看
基本思想:当插入第i(i>=1)个对象时,前面的是已经排好序的,这时只需
找到它应该在的位置,依此后挪即可。

实现代码:

template<class Type>

BOOL InsertSort(Type *pData ,int nLen)
{
//要求传入正确的数据
ASSERT(pData != NULL);

//假如只有一条数据就不排序了
if(nLen <= 1)
return FALSE;

int i=0;
int nSwapIndex;
Type tempData;
BOOL bSwap = FALSE;

for(i=1; i<nLen; i++) //待排序的
{
tempData = pData[i]; //已此作为插入数据
bSwap = FALSE; //是否应当挪动数据

for(int j=0; j<i; j++) //已排好的
{
if(tempData - pData[j] < 0) //假如有不符合的数据就记录下位置
{
nSwapIndex = j;
bSwap = TRUE;
break;
}
}

//应当挪动数据
if(bSwap)
{
for(j=i; j>nSwapIndex; j--) //依此后移
{
pData[j] = pData[j-1];
}

pData[nSwapIndex] = tempData; //将值复过来
}
}

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