一,插入排序的思想
挨个把待排序的数排在已排好序的数组中,就是说,对于数组A[n],把A[j]插入A[1,...,j-1]序列中去,
其中A[j,...,j-1]是已经排好序的序列,A[j,...,n]是待排序的数组序列。时间复杂度为O(n²)。
二、实例图示
把数组序列6,1,9,3,5进行插入排序,以小到大进行排序。
三、算法函数实现
/*****************************************
** 函数: InsertSort
** 功能: 对数组进行插入排序,排序的结果
** 保存在原数组中
** 参数: nArSource -- 待排序的数组名
** nSourceLen -- 数组长度
** 返回值: 成功返回 0,否则返回 -1
*/
int InsertSort(int nArSource[], int nSourceLen)
{
int i = 0;
int j = 0;
int nKey = 0;
if(nSourceLen <= 0)
{
return -1;
}
for(i = 1; i < nSourceLen; i++)
{
nKey = nArSource[i];
j = i - 1;
/* 把nKey插入在nArSource[j]之前的合适位置 */
while(j >= 0 && nArSource[j] > nKey)
{
nArSource[j+1] = nArSource[j];
j--;
}
nArSource[j+1] = nKey;
}
return 0;
}
该函数用c写的,添加main函数,可直接编译测试。