编程语言
首页 > 编程语言> > 跟着左神学算法-算法和数据结构

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

作者:互联网

时间复杂度:算法流程中,数据量为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!)

 

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

 

标签:下标,复杂度,交换,最小,算法,数组,数据结构,神学
来源: https://www.cnblogs.com/djtycm/p/15368945.html