0%

原理

对于少数元素的排序,这是一个有效算法。插入排序类似于排序手中的扑克牌。开始时,我们左手为空并且桌子上的牌面向下。然后我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。

阅读全文 »

使用智能指针需包含以下头文件:#include <memory>

shared_ptr类

shared_ptr允许多个指针指向同一个对象
支持的操作:

阅读全文 »

进程和程序的区别

程序

程序本质上是一系列二进制信息,这些信息描述了如何在运行时创建一个进程:

  • 二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息。内核利用此信息来解释 文件中的其他信息。
  • 机器语言指令。
  • 程序入口地址:标识程序开始执行时的起始指令位置。
  • 数据:程序文件包含的变量初始值和程序使用的字面量值(比如字符串)。
    阅读全文 »

归并排序属于分治法思想,归并排序完全遵循分治模式。直观上其操作如下:

  • 分解:分解待排序的n个元素成各具n/2个元素的两个子序列。
  • 解决:使用归并排序递归地排序两个子序列。
  • 合并:合并两个已排序的子序列以产生已排序的数组。

核心函数有两个,merge(A,p,q,r):将已经有序的序列 A[p…q]和A[q+1,r] 合并为一个有序序列。

阅读全文 »

Linux系统中用户和权限

三种不同类型的用户:文件拥护者(user),同组用户(group),可以访问系统的其他用户(others)。
三种访问文件或目录的方式:可读文件(r),可写文件(w),可执行文件(x)。

在shell环境中执行ls -la 输出当前目录的详细信息

阅读全文 »

当输入规模足够大,使得运行时间只与增长量级有关时,需要研究算法的渐近效率。也就是,当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加。本文中所用插图来自《算法导论》。

不同的记号从不同的方面来刻画一个算法的运行效率。将插入排序的最坏运行时间刻画为下式:

阅读全文 »

Makefile 作用

Makefile的作用为实现自动化编译,主要为了解决以下问题:

  • 有很多源文件需要编译时
  • 当存在很多源文件时,只修改了个别源文件,这时只需要编译修改过的文件即可,而无需整个项目都编译一遍。
  • 当多个源文件存在依赖关系时,需要先编译一些文件,后编译一些文件

    Makefile安装

    阅读全文 »

本文包含以下内容:

  • 二叉树概念
  • 使用 C 语言 实现的二叉查找树的动态集合操作:
    • 构造:使用二叉树的前序遍历构造二叉树。
    • 插入,删除,查询
    • 前驱和后继
    • 最大值和最小值
  • 红黑树的概念
    阅读全文 »