harrysimply / learn-data-structure-and-algorithm

学习计算机中的数据结构
0 stars 0 forks source link

时间复杂度Big O #10

Open harrysimply opened 2 years ago

harrysimply commented 2 years ago

Big O表示的是操作时间数上限。

在表达式中,只要高阶项,不要低阶项的系数,剩下的部分如果为f(N),那么时间复杂度为O(f(N))。

harrysimply commented 2 years ago

选择排序

选择排序定义:从0到N-1找到最小值,放在第0位;之后再从1到N-1找到最小值,放到第1位....直到第N-1位数字。

分析时间: 第一次N次查询,N次比较,1次交换; 第二次N-1次查询,N-1次比较,1次交换...

总共时间:

查询:N+ N-1 + N-2+ N-3 +... (等差数列求和出现平方) 比较:N + N-1 + N-2 + N-3+... 交换: N

= aN^2 + bN + c

因此时间复杂度位O(n^2)

有限几个变量,额外的空间复杂度为O(1)

harrysimply commented 2 years ago

冒泡排序

冒泡排序定义:从0到N-1两两比较,将较大的数移到右侧,一轮比较下来N-1位置的数就是最大的数;下一轮0到N-2之间两两比较,N-2位置就是最大的数;...直到第N轮,最后一个数无需比较。

因为是一个等比数列,所以时间复杂度还是 O(N2)