算法入门指南

 只要你是一名程序员,或准程序员,那么不可或缺的都得学习一样能让你的代码像某二仙桥大爷骑了小电驴一样快,而且还贼TM牛逼的东西——

算法

现在的算法,主要有以下五种:

递归!

分治!

二分!

动态规划!

贪心!

我愿称之为:计算机界的五常祖宗,因为几乎所有的算法都是由这五种算法演化或组合而来的。

算法,为什么叫做算法,就是因为它是能让计算机的计算量减少,效率能够提高,短短几句代码,可能也会发生时间复杂度急剧减小

下面是在长度为 n 的数组中普通搜索与二分搜索的时间复杂度与代码的比较: 

const int N = 1e8 + 10;
int a[N];

int n, m;
scanf("%d%d", &n, &m);

for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
}

// 普通搜索
/*
int flag = 0;
for (int i = 1; i <= n; i++) {
    if (a[i] == m) {
        printf("%d", i);
        flag = 1;
        break;
    }
}
if (flag == 0) {
    printf("-1");
}
*/
// 时间复杂度为O(n)

// 二分搜索
int l = 1;
int r = n;
int mid;
int ret = -1;

while (l <= r) {
    mid = (l + r) / 2;
    if (a[mid] == m) {
        ret = mid;
        break;
    } else if (a[mid] < m) {
        l = mid + 1;
    } else {
        r = mid - 1;
    }
}

printf("%d", ret);
// 时间复杂度为O(log n)

其实吧,算法简介是真的没什么可以写的,那我总不能写小说写了个预告不写内容吧

好了,下课!

下一节课还是算法课,我们来学递归!

PS:看在我这么努力的份上,给个三连吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值