原始地址:C / C++算法学习笔记(6)-插入法
插入法:
插入法较为复杂,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张。
#include <iostream.h>
void InsertSort(int* pData,int Count)
{
int iTemp;
int iPos;
for(int i=1;i<Count;i++)
{
iTemp = pData[i];
iPos = i-1;
while((iPos>=0) && (iTemp<pData[iPos]))
{
pData[iPos+1] = pData[iPos];
iPos--;
}
pData[iPos+1] = iTemp;
}
}
void main()
{
int data[] = {10,9,8,7,6,5,4};
InsertSort(data,7);
for (int i=0;i<7;i++)
cout<<data[i]<<" ";
cout<<"/n";
}
i=1时:
iTemp=pData[1]=9
ipos=1-1=0;
ipos=0>=0 && iTemp=9<pData[0]=10;
pData[1]=pData[0]=10;
ipos--=0-1=-1;
pData[0]=9; 9-10-8-7-6-5-4
i=2时:
iTemp=pData[2]=8
ipos=2-1=1;
ipos=1>=0 && iTemp=8<pData[1]=10;
pData[2]=pData[1]=10;

本文详细介绍了C/C++实现的插入排序算法,通过实例展示了算法过程,包括正序和倒序输入的情况。分析了循环和交换次数,指出尽管插入排序在某些情况下看似高效,但其时间复杂度仍为O(n*n),而在简单排序算法中,选择法可能是更好的选择。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



