Java教程

跟着左神学算法-算法和数据结构

本文主要是介绍跟着左神学算法-算法和数据结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

时间复杂度:算法流程中,数据量为n的样本中,执行完整个流程,常数操作的数量关系。

【0-n】数组从小到大排序,下标为0 - n-1,其中最小数位置。选择排序:遍历数组,找到最小数,和数组的第一个数交换位置,遍历除首位的其他数,找到最小数,和下标为1的数交换位置,从下标2开始遍历,找到最小数,和下标2位置的数交换位置,直至结束。

涉及到的操作:没个数都要取出来看一次,每次找最小数都要进行比较:第一次找最小数:n次看+ n-1次比较,在进行交换。第二次:n-1次看 + n-2次比较,交换......

也就是个等差数列。等差数列最终会化成:a*N^2 + b*n + c.  + n。

复杂度只要最高阶数,前面的常数也去掉,也就是:时间复杂度: O(n^2).

用最差的数据状况来计算时间复杂度。

 

空间复杂度:计算整个算法流程所开辟的新的空间的数量,默认已知内容不算在内。

如果说,需要拷贝一个数组,和当前的数组一致,则空间复杂度是O(1),最终结果和初始内容一致,不消耗空间复杂度,仅仅是拷贝过程中的中间变量消耗了空间复杂度。

 

常见的时间复杂度(我们陆续都会见到的):

排名从好到差: O(1) O(logN) O(N) O(N*logN) O(N^2) O(N^3) … O(N^K) O(2^N) O(3^N) … O(K^N) O(N!)

 

对数器:用两种不同的思路实现同一个问题的代码,用随机数进行测试,比较两种方式结果是否相同。

 

这篇关于跟着左神学算法-算法和数据结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!