排序是将新的数字插入到已经排序的序列中,是一种在位排序,不耗内存.
把数据按照升序排列,而初始情况是降序排序,那么需要比较1+2+...+n=n*(n-1)/2次
取平均也有n*(n-1)/4次,其平均复杂度为o(n^2);
把数据按照升序排列,而初始情况是降序排序,那么需要比较1+2+...+n=n*(n-1)/2次
取平均也有n*(n-1)/4次,其平均复杂度为o(n^2);
因而其适合小数据的排序;
void insertSort(int *pData,int nLen)
{
if (pData==NULL||nLen<=1)
{
return;
}
for(int i=1;i<nLen;i++)
{
int nTemp=pData[i];
for (int j=i-1;j>=0;j--)
{
if (pData[j]>nTemp)
{
pData[j+1]=pData[j];
pData[j]=nTemp;
}
}
}
}