标签: computer-science

编写桌面应用程序所需的最低CompSci知识

作为一个业余爱好者程序员已经3年了(主要是Python和C),并且从未编写超过500行代码的应用程序,我发现自己面临两个选择:

(1)学习数据结构和算法设计的基本知识,这样我就可以成为一名计算机科学家.

(2)学习Qt,这将帮助我建立我一直渴望建立的项目很长一段时间.

对于学习(1),每个人似乎都建议阅读CLRS.不幸的是,阅读CLRS会花费我至少一年的学习时间(或者更多,我不是Peter Krumins).我也明白,使用(2)来完成的任何中等复杂的任务,我需要至少了解的基础知识(1),这使我想到我的问题:假设我使用C++作为首选的编程语言的哪些部分CLRS会给我足够的算法和数据结构知识,可以使用(2)来处理大型项目吗?

换句话说,我需要一个理论上的CompSci主题列表,这对于日常应用程序编程任务来说绝对必不可少.此外,我想使用CLRS作为一个方便的参考,所以我不想跳过任何对理解本书后面部分至关重要的材料.

别在我这里弄错了.离散数学和CompSci的理论基础已经出现在我的"TODO:URGENT"列表中大约6个月了,但由于大学工作,我没有足够的时间.很长一段时间后,我有15天休息时间去做我喜欢的任何事情,我想花这15天来构建我真正想要建立的应用程序,而不是坐在我的桌子上,笔和纸在手,试图写下来教科书问题的解决方案.

(顺便说一句,关于算法的数学代码资源越来越少,我将非常感激.我刚从高中毕业,我的数学水平还没有达到应有的水平.)

谢谢 :)

algorithm qt computer-science

1
推荐指数
1
解决办法
441
查看次数

流十六进制数字并以十进制输出流而不等待所有数据出现是否可行

假设您有一个包含千兆字节的文件

deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
Run Code Online (Sandbox Code Playgroud)

并且你想将它转换为十进制,就像你将0xdeadbeef转换为3,735,928,559一样.

数字可被2整除的基数很容易实现,因为您可以每隔几位操作并输出一个数字(6为base64).

有什么办法用十进制做到这一点?

编辑:该文件代表一个长号.它重复的事实与数字5555,055,055没有什么不同.

EDIT2:文件大小已知.然后怎样呢?

algorithm computer-science radix

1
推荐指数
1
解决办法
99
查看次数

LinkedList与HashMap的摊销表现

对于大多数操作,哈希表的摊销性能通常被认为是O(1).

比如标准的LinkedList实现,搜索操作的摊销性能是多少?是O(n)?

我对这是如何计算有点困惑,因为在最坏的情况下(假设总是碰撞的哈希函数),哈希表在搜索操作方面几乎等同于LinkedList(假设一个标准)斗式实施).

我知道在实践中这种情况永远不会发生,除非哈希函数被破坏,因此平均性能几乎是一系列操作的恒定时间,因为碰撞很少见.但在计算摊销的最坏情况时,我们不应该考虑最坏情况下的最坏情况序列吗?

algorithm performance computer-science data-structures

1
推荐指数
1
解决办法
1193
查看次数

从K&R的"C编程语言"中学习C语言

对于我大学计算机科学课程的一部分,我们需要学习C.我的讲师推荐了K&R的C语言编程语言第2版.阅读前几页后,它清楚地表明这本书不是一本完整的指南,有时可能会产生误导,所以我想知道我是否应该从这本书中"学习"C?(这也是一本旧书)

我来自一个基本的Java背景,所以我理解程序的基本元素(变量,数据类型,循环等),所以看看C语法不应该太过震惊.

c computer-science

1
推荐指数
1
解决办法
1187
查看次数

MatLab值得购买吗?

我可以在学校的计算机上访问MatLab,但它现在更像是一个便利因素.我想稍后使用raspberry pi进入编程,但在此期间是否值得购买?作为一名计算机工程师,这对我有用吗?谢谢.

matlab computer-science raspberry-pi

1
推荐指数
1
解决办法
505
查看次数

强连通图

我有一个强烈连接的图表.我想删除边缘并检查是否仍然保持强连接.当我拿N =图中的节点总数为10时,我感兴趣的大多数图表都有25个以上的边缘,很难一次性使用一个去除边缘.

如何解决这个问题呢 ?谢谢.

algorithm computer-science graph

1
推荐指数
1
解决办法
208
查看次数

我相信这个算法是O(N).我对么?

该算法反转N个整数的数组.我相信这个算法是O(N),因为对于每个循环迭代,四行代码执行一次,从而在4N时间内完成作业.

public static void reverseTheNumbers(int[] list) {
    for (int i = 0; i < list.length / 2; i++) {
        int j = list.length - 1 - i;
        int temp = list[i];
        list[i] = list[j];
        list[j] = temp;
    }
}
Run Code Online (Sandbox Code Playgroud)

java algorithm big-o computer-science

1
推荐指数
1
解决办法
106
查看次数

掌握定理和递归

我想找出如何解决此代码的主定理:

unsigned long fac (unsigned long n ) {
    if (n == 1 )
        return 1;
    else
        return fact(n-1)*n;
}
Run Code Online (Sandbox Code Playgroud)

因此,基于我只有1次自称a = 1的事实。除了该函数调用外,O(n)= 1也是如此。现在我正在为我的b奋斗。通常,一般公式为:

T(n)= a * T(n / 2)+ f(n)

在这种情况下,我没有划分主要问题。新问题只需要解决n-1。b现在是什么?因为我的复发是:

T(n)= 1 * T(n-1)+ O(1)

由于我不知道确切的b,现在如何使用主定理?

math recursion recurrence computer-science master-theorem

1
推荐指数
1
解决办法
200
查看次数

何时在Rust中发生类型绑定?

据我所知:在C语言中,变量的"类型"在编译期间被绑定,并且该变量的值在运行时被绑定.

例如,在编译期间int a = 10;,类型int绑定到变量,并且在运行时a将实际值10绑定(或分配)给它.

但在Rust,我们有let a = 2;.这里,什么时候类型(比如i32Rust中的任何整数类型)被绑定a

我正在构建一个前端Rust编译器,目前正在编写解析器阶段.此时,我应该为这些变量分配什么类型?

computer-science programming-languages rust

1
推荐指数
1
解决办法
146
查看次数

P vs NP与经典与量子计算机可解决的问题相同吗?

P vs NP问题确实存在问题吗?难道我们不能说P问题是经典计算机可以解决的问题,因为它适合于它的架构,NP问题本质上是量子的,可以通过量子架构的计算机来解决吗?

algorithm computer-science cpu-architecture quantum-computing

1
推荐指数
1
解决办法
111
查看次数