插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法[1]。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动[2]。
插入排序
#include <stdio.h>
//插入排序
void insertSort(int arry[], int len)
{
int i;
int temp;//保存要插入的元素
int j;//从当前要要比较插入的元素的前面一个开始
for ( i = 1; i < len; i++)//第一个元素视为有序,把后面的元素一个一个的插入到前面
{
temp = arry[i];
j = i - 1;
while (j >= 0&&arry[j]>temp)
{
arry[j + 1] = arry[j];//前面的元素往后面移动
j--;
}
arry[j + 1] = temp;//把要插入的元素,插入进对应的位置
}
}
//输出
void print(int arry[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", arry[i]);
}
}
int main()
{
int arry[10]={3,44,38,5,47,15,36,26,27,2};
insertSort(arry,10);
print(arry,10);
printf("\n");
return 0;
}