图解快速排序算法

快速排序是一种排序算法,速度要比选择排序快的多,属于优雅代码的典范。本文在讲解快速排序算法之前,先来介绍它的策略–分而治之(divide and conquer, D & C),这是一种著名的递归式问题解决方法。

选择排序算法

需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存 储多项数据时,有两种基本方式——数组和链表。但它们并非都适用于所有的情形,因此知道它 们的差别很重要。接下来介绍数组和链表以及它们的优缺点。

算法时间复杂度–大O表示法

算法的时间复杂度表示法–大O表示法是一种特殊的表示法,指出了算法的速度有多快。我们经常要使用别人编写的算法,在这种情况下,知道这些算法的速度大有裨益。本文介绍大O表示法是什么,并使用它列出一些最常见的算法运行时间。

图解二分查找算法

算法是一组完成任务的指令,任何代码片段都可视为算法。本文主要描述一下二分查找算法。假设要在电话簿中找一个名字以K打头的人,可以从头开始翻页,直到进入以K打头的部分。但你很可能不这样做,而是从中间开始,因为你知道以K打头的名字在电话簿中间。又假设要在字典中找一个以O打头的单词,你也将从中间附近开始。

每个程序员都必须知道的8种数据结构

数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。有部分数据结构我们之前介绍过,但可以在本文中从不同角度详细了解下。

计算机网络基础知识总结

计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。

OSI参考模型和TCP/IP分层模型

网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。计算机网络通俗地讲就是通过传输介质将分布在各个地方的计算机和网络设备连接起来,实现数据通信、资源共享的一张网络。

为什么排序的复杂度为O(NlogN)

基本上所有正而八经的算法教材都会解释像快速排序(quicksort)和堆排序(heapsort)这样的排序算法有多快,但并不需要复杂的数学就能证明你可以逐渐趋近的速度有多快。

什么是DNS, 它是如何工作的?

域名系统(Domain Name System)(DNS)是互联网的基础之一,然而大多数不懂网络的人可能并不知道他们每天都在使用它来工作、查看电子邮件或在智能手机上浪费时间。

用代换法解决递归算法

当一个算法包含对自身的递归调用时,其运行时间通常可以用递归式来表示。本文介绍一种递归式的解法:代换法,即先猜有某个界存再,然后再用数学归纳法证明该猜测的正确性。

算法和算法分析

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。本文简单描述下算法和算法分析。

位移运算和乘除的关系

二进制的运算,和十进制一样,加减乘除也适用于二进制数,只要注意逢2进位即可,也是计算机程序所特有的运算,因此了解二进制的运算是必须要掌握的。

浅谈二进制

我们都知道,计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?本文将做一个阐述。

链表和二叉树

本文介绍一下链表和二叉树,它们都是可以不用考虑索引的顺序就可以对元素进行读写的方式。通过使用链表,可以高效的对数据元素进行添加和删除操作。而通过使用二叉树,则可以更高效的对数据进行检索。

栈和队列

本文描述一下栈和队列,这两种数据结构都可以操作内存的读写。栈(stack)是一种很重要的数据结构,栈采用 LIFO(Last In First Out)即先入后出的方式对内存进行操作。队列和栈很相似但又不同,相同之处在于队列也不需要指定元素的地址,不同之处在于队列是一种先入先出(First In First Out)的数据结构。