直接插入排序
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;
}
相关文章推荐
- 面试利器(二)-------插入排序(直接插入排序和希尔排序(Shell排序))
- 项目1 验证算法(1) 直接插入排序
- 第15周项目1 -2验证算法之直接插入排序
- 直接插入排序,希尔排序
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 直接插入排序
- 直接插入排序
- 插入排序——直接插入排序
- 直接插入排序
- 数据结构之 直接插入排序
- 插入排序——直接插入排序、二分插入排序、希尔排序
- 排序算法-直接插入排序
- python算法实践1-直接插入排序
- 算法 -- iOS开发用Objective_C / Swift3.0实现:直接插入排序 / 二分法插入排序 / 希尔排序
- 直接插入排序和希尔排序
- 插入排序--直接插入排序
- 直接插入排序----java实现
- 内部排序之直接插入排序
- 白话经典算法系列之——直接插入排序的三种实现
- 直接插入排序