算法

算法

算法是一种将有限计算资源发挥到极致的武器,当计算资源很富余时算法没大用,但一旦到了效率瓶颈,算法绝对是开山第一刀(因为算法不要钱嘛!)。

 

存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。存储算法本身所占用的存储空间与算法书写的长短成正比,要压缩这方面的存储空间,就必须编写出较短的算法。算法在运行过程中临时占用的存储空间随算法的不同而异,有的算法只需要占用少量的临时工作单元,而且不随问题规模的大小而改变,我们称这种算法是“就地\"进行的,是节省存储的算法,有的算法需要占用的临时工作单元数与解决问题的规模n有关,它随着n的增大而增大,当n较大时,将占用较多的存储单元,例如快速排序和归并排序算法就属于这种情况

 

 

算法复杂度
  算法复杂度分为时间复杂度和空间复杂度。其意义 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。

 

 

时间复杂度

 

常数阶O(1),对数阶O(log2n),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...,
k次方阶O(nk),指数阶O(2n).随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低.

 

简单理解:就是变量为n的时候,算法需要对变量操作次数的量级。

比如:要找到一个数组里面最大的一个数,你要把n个变量都扫描一遍,操作次数为n,那么算法复杂度是O(n).用冒泡排序排一个数组,对于n个变量的数组,需要交换变量位置次,那么算法复杂度就是.有时候,如果对变量操作的次数是个多项式比如n4+n2+n, 就取数量级最大的那个,O(n4)

 

 

1、O(1) 一次计算 常数

$x = 1;  

2、O(n) n次计算 线性 $y=$x*2;

for($i=0; $i<$n; $i++) {  

echo $i;  

3、O()   log2n是数学中的对数,是以2为底n的对数为多少,也就是2的多少次方是N

$n = 8;

$count = 0;

for($i=2; $i<=$n; $i *= 2) {

    $count++;

}

echo $count;

4、  平方

$n = 8;

    $count = 0;;  

    for($i=1; $i<=$n; $i++) {  

        for($j=1; $j<=$n; $j++) {  

            $count++;  

        }  

}

echo $count;

5、  线性对数阶 2的多少次方是N,求n和多少次方的线性关系

$n = 8;

    $count = 0;;  

    for($i=2; $i<=$n; $i *= 2) {

        for($j=1; $j<=$n; $j++) {

            $count++;

        }

}

echo $count;

 

 

空间复杂度

 

与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量,记做S(n)=O(f(n))。

 

1、O(1)

 

//交换两个变量x和y

$x=1;

$y=2;

$temp = $x;

$x = $y;

$y = $temp;

 

一个临时变量temp,所以空间复杂度为O(1)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值