插入排序是最简单的排序算法。正式表述为:插入排序每次从无序数据集中取出一个元素,扫描已排好序的数据集,并将它插入有序集合的合适位置上。虽然乍一看插入排序需要独立为有序和无序的元素预留足够的存储空间,但实际上它是不需要额外的存储空间的。
插入排序是一种较为简单的算法,但它在处理大型数据集时并不高效。因为在决定将元素插入哪个位置之前,需要将被插入元素和有序数据集中的其他元素进行比较,这会随着的数据集的增大而增加额外的开销。插入排序的优点是当将元素插入一个有序数据集中时,只需对有序数据集最多进行一次遍历,而不需要完整的运行算法,这个特性使得插入排序在增量排序中非常高效。
void insert_sort(int *arr,int length)
{
int temp;
for(int i = 1; i < length; ++i)
{
temp=arr[i];
for(int j = i-1; j >= -1; j--)
{
if(j >= 0 && temp < arr[j])
{
arr[j+1] = arr[j];
}
else
{
arr[j+1] = temp;
break;
}
}
}
}