算法概论与基础

1.今天在思考一个问题,技术与能力。技术可以通过学习而提升,但是能力想提升却比较难。

2.技术是最不值钱的东西,只要你愿意学,你智商正常,都是可以学会的。

3.程序员不应该重复造轮子当码农,要从程序中解脱出来,研究学习思想 。

4.想进大厂拿高薪 需要算法过硬。

开始讲讲算法吧:

数据结构:分为逻辑结构和物理结构。

逻辑结构:线性结构/树形结构/图形结构等

物理结构:顺序存储结构 链式存储结构

评估算法的优劣:时间复杂度,空间复杂度

没有循环结构,时间复杂度O(1);

n 维矩阵乘法:时间复杂度O(n^3);

  1. Mat operator*(Mat a,Mat b)    
  2. {    
  3.     int i,j,k;    
  4.     Mat c;    
  5.     for (i=0;i<len;i++)    
  6.     {    
  7.         for (j=0;j<len;j++)    
  8.         {    
  9.             c.mat[i][j] = 0;    
  10.             for(k=0;k<len;k++)    
  11.                 c.mat[i][j]+=(a.mat[i][k]*b.mat[k][j])%MOD;    
  12.         }    
  13.     }    
  14.     return c;    
  15. }   

二分查找:

public static int Search(int [] a, int num) {

int key = 0;
int low = 0;
int high = a.Length;
int mid = 0;
while (low < high) {
mid = (low + high) / 2;
if (a[mid] < num)
low = mid + 1;
else if (a[mid] > num)
high = mid - 1;
else
{
key = mid;
return key;
}

}

return key;

}

时间复杂度:

渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数
由于你n/2^k取整后>=1
即令n/2^k=1
可得k=log2n,(是以2为底,n的对数)

转载于:https://www.cnblogs.com/DOGame/p/8698854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值