Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。

快速排序的实现与应用

快速排序(Quick Sort)是一种非常经典高效的排序算法,采用了基于比较的递归分治策略,平均情况下复杂度为O(nlogn),但最坏情况会退化到O(n^2)。
在笔试面试过程中经常会有关于快速排序的问题,甚至要求面试者当场手写代码,本文将简单介绍快排原理并提供具体的代码实现,以及其在求第n小的数中的经典应用。

继续阅读»

在Visual Stuido中使用DLL

前面在在Visual Stuido中创建DLL这篇文章中介绍了如何在Visual Studio中创建自己的DLL,本文将继续讨论如何在Visual Studio中调用自己新建的DLL或者使用别人提供的DLL。
由于DLL调用有显示调用和隐式调用之分,适用于不同情况的需求,以下将分别进行详细介绍。

继续阅读»

在Visual Stuido中创建DLL

DLL(Dynamic Link Library,动态链接库)是Windows中一个包含可由多个程序同时使用的代码和数据的共享库,是实现代码复用提高软件开发效率的重要途径。Linux下等价的概念称为so(share object)文件,本文主要关注Windows方面的内容。

继续阅读»

C/C++中的预编译指令

程序的编译过程可以分为预处理、编译、汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器。
预处理过程读入源代码之后,会检查代码里包含的预处理指令,完成诸如包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码的工作。下面介绍一些C/C++中预编译的指令。

继续阅读»

若干面试概率题

概率论是计算机科学非常重要的基础学科之一,概率题也是在程序员求职过程中经常遇到的问题。
以下总结若干经典的概率题,作为练习。

哈夫曼编码

哈夫曼编码(Huffman Coding)是一种非常经典的编码方式,属于可变字长编码(VLC)的一种,通过构造带权路径长度最小的最优二叉树以达到数据压缩的目的。
哈弗曼编码实现起来也非常简单,在实际的笔试面试过程中有可能会遇到,本文主要介绍具体的编码原理,以及使用STL的优先队列进行实现。

继续阅读»

面试中的大数据处理

海量数据处理是面试过程及实际工作经常遇到的一大类,特别是在如今大数据风起云涌的互联网时代。因为数据量太大,对CPU和内存等系统资源要求太高,时间花费太长,需要有特殊的算法和数据结构进行处理。
这里总结下学习过程中的笔记,主要参考自July博客

继续阅读»

面试中经典函数的实现

很多经典的库函数如strcpy,memcpy等虽然思想并不复杂,但要写出一个比较完善甚至是完全正确的程序非常考验一个程序员思维的严谨性和编程的风格,因而非常受面试官的青睐。
本文主要使用C/C++语言实现strcpy、strncpy、memcpy、memmove、memset、strlen等函数,仅供参考。

继续阅读»

杨氏矩阵的操作与计数

杨氏矩阵(Young tableau)是一种简单却很神奇的数据结构,具有类似于堆的操作和性质。在实际中可能不是很常用,但在面试中却经常遇到,比较考察程序员的算法思维能力。
本文主要讲解下杨氏矩阵的定义及一般的操作和计数问题。

继续阅读»

C++单链表面试问题(2)

链表是程序设计的基本数据结构,也是程序员笔试面试中经常出现的问题。虽然链表在实际中应用不是太广泛,但是它在一些细节的处理上能够很好地体现出一个程序员的编程技巧和思维能力。
这里总结了一些面试中常见的单链表内容,具体分为两个部分,本文主要介绍单链表的综合使用问题。

继续阅读»

C++单链表面试问题(1)

链表是程序设计的基本数据结构,也是程序员笔试面试中经常出现的问题。虽然链表在实际中应用不是太广泛,但是它在一些细节的处理上能够很好地体现出一个程序员的编程技巧和思维能力。
这里总结了一些面试中常见的单链表内容,具体分为两个部分,本文主要介绍单链表的基本使用方法。

继续阅读»

C++中String类的实现

String是C++中的重要类型,程序员在C++面试中经常会遇到关于String的细节问题,甚至要求当场实现这个类。只是由于时间关系,可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。
String的实现涉及很多C++的基础知识、内存控制及异常处理等问题,仔细研究起来非常复杂,本文主要做一个简单的总结和归纳。

继续阅读»

C++ sizeof的内存计算(2)

内存控制是程序设计过程中非常关键的一环,C/C++中使用sizeof计算数据占用的内存大小是一个常见的手段,但是这个问题涉及到很多基础的编程细节,能够很好地反映一个程序员的基本功,成为了笔试面试常见的问题之一。
这里总结了一些常见的问题,鉴于篇幅问题,分成两部分进行,这里主要介绍稍微进阶的第二部分。

继续阅读»

C++ sizeof的内存计算(1)

内存控制是程序设计过程中非常关键的一环,C/C++中使用sizeof计算数据占用的内存大小是一个常见的手段,但是这个问题涉及到很多基础的编程细节,能够很好地反映一个程序员的基本功,成为了笔试面试常见的问题之一。
这里总结了一些常见的问题,鉴于篇幅问题,分成两部分进行,这里主要介绍比较基础的第一部分。

继续阅读»

LIBSVM在Matlab下的使用

支持向量机(SVM,Support Vector Machine)是一种基于统计学习理论的模式识别方法,在解决小样本、高维度及非线性的分类问题中应用非常广泛。
LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。

继续阅读»

分页: 第一页 «上一页 6789101112131415 下一页 » 最后一页

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论