插入排序算法(C语言版)
直接插入排序
插入排序(insert sort)是一种简单的排序算法,它的工作原理与手动整理一副牌的过程非常相似。
具体来说,我们在未排序区间选择一个基准元素,将该元素与其左侧已排序区间的元素逐一比较大小,并将该元素插入到正确的位置。
代码示例
void insert_sort(int* arr,int n) { for (int i = 0; i = 0) { if (tmp性能分析
- 时间复杂N^2)
- 空间复杂度:O(1)
希尔排序
希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。
希尔排序又称缩小增量排序,因 DL.Shell 于 1959 年提出而得名。
它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。
代码示例
void shell_sort(int* arr, int n) { int gap = n; while (gap > 1) { gap = gap / 3 + 1;//保证最后一次 gap==1 //多组并排 for (int i = 0; i = 0) { if (tmp
性能分析
- 时间复杂度不好计算,需要进行推导,推导出来平均时间复杂度: O(N^1.3— N^2)
- 空间复杂度:O(1)
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。