1.C++实现
#include <stdio.h>
//打印数组
void printArray(int* array, int count);
/*
* 直接插入排序
* @Param array 待排序数组
* @Param count 数组中元素个数
*/
void insert_sort(int* array, int count)
{
int tmp = 0;
for (int i = 1; i < count; i++)
{
for (int j = i ; j >0; j--)
{
if (array[j] < array[j - 1])
{
tmp = array[j];
array[j] = array[j-1];
array[j - 1] = tmp;
}
}
}
}
int main()
{
int array[] = { 8,20,9,7,21,50,11,65,73,15 };
printf("排序前:\n");
printArray(array, sizeof(array) / sizeof(int));
//直接插入排序
insert_sort(array, sizeof(array) / sizeof(int));
printf("排序后:\n");
printArray(array, sizeof(array) / sizeof(int));
}
void printArray(int* array, int count)
{
for (int i = 0; i < count; i++)
{
printf("%d\t", array[i]);
}
printf("\n");
}
2.时间复杂度及空间复杂度
复杂度 | 最好 | 最坏 | 平均 |
时间复杂度 | O(n) | O( | O( |
空间复杂度 | O(1) | O(1) | O(1) |
3.稳定性
直接插入排序是稳定的排序算法。