时间复杂度
就是在学习数据结构时,就第一章的时间复杂度和空间复杂度,我就弄不明白了。。。到底表达的是什么意思了?有什么用呢?哎。。。
#include <stdio.h> // 时间复杂度O(n) int fun1() { int sum = 0; for (int i = 1;i <= 100;i++) { sum += i; } return sum; } // 时间复杂度O(n/2) int fun2() { int sum = 0; for (int i = 1;i <= 50;i++) { sum += i + (101 - i); } return sum; } // 时间复杂度O(1) int fun3() { return (1 + 100) * 100 / 2; } int main(int argc, char *argv[]) { printf("%d\n", fun1()); printf("%d\n", fun2()); printf("%d\n", fun3()); return 0; }
#include <stdio.h> #define MAX 10 // 空间复杂度O(n^2) int fun1(int m, int n) { int sa[MAX][MAX] = {{0}}; for (int i = 0;i <= m;i++) for (int j = 0;j <= i;j++) { if (j == 0 || j == i) sa[i][j] = 1; else sa[i][j] = sa[i-1][j-1] + sa[i-1][j]; } return sa[m][n]; } // 空间复杂度O(n) int fun2(int m, int n) { int sa[MAX] = {0}; for (int i = 0;i <= m;i++) for (int j = i;j >= 0;j--) { if (j == 0 || j == i) sa[j] = 1; else sa[j] = sa[j] + sa[j - 1]; } return sa[n]; } // 空间复杂度O(x) int fun3(int m, int n) { if (0 == n || n == m) return 1; return fun3(m - 1, n) + fun3(m - 1, n - 1); } int main(int argc, char *argv[]) { printf("%d\n", fun1(6, 3)); printf("%d\n", fun2(6, 3)); printf("%d\n", fun3(6, 3)); return 0; }
[此贴子已经被作者于2015-10-21 09:46编辑过]