插入排序的时间复杂度分析
来源:互联网 发布:淘宝手机售后维修 编辑:程序博客网 时间:2024/05/11 02:29
#include <stdio.h>#define LEN 5int a[LEN] = { 10, 5, 2, 4, 7 };void insertion_sort(void){//costtimeint i, j, key;for (j = 1; j < LEN; ++j) {//c1nkey = a[j];//c2n-1i = j - 1;//c4n-1while (i >= 0 && a[i] > key) {<span style="white-space:pre"></span>//c5//j == 2, 3, 4, 5, ... , ntj - 第j次迭代所需次数?a[i+1] = a[i];//c6--i;//c7}a[i+1] = key;//c8n-1}printf("%d, %d, %d, %d, %d\n", a[0], a[1], a[2], a[3], a[4]);}int main(void){insertion_sort();return 0;}
总的复杂度,便是T(n) = c1n + c2(n-1) + c4(n-1) + c5*sigma(n, j, 2, t[j]) + c6*sigma(n, j, 2, t[j]-1) + c7*sigma(n, j, 2, t[j]-1) + c8(n-1)
很明显,最好情况(已经排好了)那就是一下就过,t[j] == 1,上式简化成(c1 + c2 + c4 + c5 +c8)*n - (c2 + c4 + c8),这是线性函数,所以属于Θ(n)
那如果是最坏情况呢?这时候t[j] == j,都要执行j次,上式变形,得到一二次函数属于Θ(n^2)
0 0
- 插入排序的时间复杂度分析
- 插入排序算法的java实现及时间复杂度分析
- 算法 插入排序 的 JS实现及时间复杂度分析
- 插入排序的时间复杂度而
- 插入排序和归并排序实现以及时间复杂度分析
- 插入排序 和 归并排序(分治)的c实现和时间复杂度分析
- 浅谈直接插入排序算法思想以及时间复杂度分析
- 直接插入排序算法c语言实现。 己它的时间复杂度分析。
- 选择排序的时间复杂度分析
- 插入排序和shell排序及其时间复杂度和空间复杂度分析
- 常用排序算法--冒泡排序及改进和插入排序时间复杂度分析
- 红黑树的插入和遍历时间复杂度分析
- 快速排序时间复杂度分析
- 快速排序时间复杂度分析
- 快速排序时间复杂度分析
- 快速排序时间复杂度分析
- 快速排序时间复杂度分析
- 快速排序时间复杂度分析
- java 随机函数
- UVA 11020(Efficient Solutions-multiset的lower_bound)
- hdu 4850 Wow! Such String! 2014西安全国邀请赛
- nyoj1058部分和问题
- ios8 百度地图 定位不到问题
- 插入排序的时间复杂度分析
- 时间纪元
- 学会这些你就可以做PM了 程序员也应该了解UI知识
- 【android】Activity、Task、应用和进程
- 文档显示不正确说明
- LeetCode[Array]: Search for a Range
- xml解析
- java中数组传递
- bzoj 3236: [Ahoi2013]作业