一、直接插入排序
插入排序的思想是这样的:对于一个有序序列中,查找新元素在有序序列中的位置,然后从后往前插入到查找的位置,而直接插入排序的原理便是顺序查找。
二、算法实现
int sqTable[] = { 0,49,38,65,97,76,13,27,49};//其中[0]位置储存的是哨岗
int length = (sizeof(sqTable) / sizeof(int))-1;//不要第一个位置
void PrintTable(){
for (int i = 1; i <= length; i++)
{
printf("%d:", sqTable[i]);
}
printf("\n");
}
//直接插入排序=========================
void InsertSort(){
//对sqTable进行排序
for (int i = 2; i <= length; i++)
{
if (sqTable[i] < sqTable[i-1])
{
//当前的数比前一个小才进行排序
//哨岗位置赋值
sqTable[0] = sqTable[i];
//sqTable[i] = sqTable[i - 1];
//寻找该插入的位置 从后往前比较 元素向后移动
int j = i - 1;
for (; sqTable[0] <sqTable[j]; j--)
{
sqTable[j + 1] = sqTable[j];
}
sqTable[j+1] = sqTable[0];
}
PrintTable();
}
}
三、执行
InsertSort();