插入排序基本思想:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止。
插入排序主要包括两种:直接插入排序和希尔排序
1.直接插入排序
直接插入排序:
当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移。
特性:
- 元素集合越接近有序,直接插入排序算法的时间效率越高
- 最优情况下:时间效率为O(n)
- 最差情况下:时间复杂度为O( )
- 空间复杂度:O(1)
- 它是一种稳定的排序算法
C语言实现:
//################ 1.1 直接插入排序
void InsertSort(int* array, int size)
{
for (int i = 1; i < size; i++)
{
int temp = array[i];//存放要插入的数据
int index