归并排序原理
归并排序属于分治法思想,归并排序完全遵循分治模式。直观上其操作如下:
- 分解:分解待排序的n个元素成各具n/2个元素的两个子序列。
- 解决:使用归并排序递归地排序两个子序列。
- 合并:合并两个已排序的子序列以产生已排序的数组。
核心函数有两个,merge(A,p,q,r):将已经有序的序列 A[p…q]和A[q+1,r] 合并为一个有序序列。
归并排序属于分治法思想,归并排序完全遵循分治模式。直观上其操作如下:
核心函数有两个,merge(A,p,q,r):将已经有序的序列 A[p…q]和A[q+1,r] 合并为一个有序序列。
三种不同类型的用户:文件拥护者(user),同组用户(group),可以访问系统的其他用户(others)。
三种访问文件或目录的方式:可读文件(r),可写文件(w),可执行文件(x)。
在shell环境中执行ls -la 输出当前目录的详细信息
当输入规模足够大,使得运行时间只与增长量级有关时,需要研究算法的渐近效率。也就是,当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加。本文中所用插图来自《算法导论》。
不同的记号从不同的方面来刻画一个算法的运行效率。将插入排序的最坏运行时间刻画为下式:
Makefile的作用为实现自动化编译,主要为了解决以下问题:
分别用递归和迭代实现二叉树三种遍历方式:前序遍历,中序遍历,后序遍历。递归的缺点分析。
快速排序使用分治法实现,即一个一个复杂的问题分解为一系列容易解决的小问题,最终得到问题的解。
快速排序的三步分治过程:例如对 A[p…r] 进行快速排序
文件标记 | Ascii | 含义 |
---|---|---|
‘\n’ | 10 | 换行 |
‘\0’ | 0 | c语言中表示字符串结束符 |
EOT | 4 | 传输结束符 |
**EOF(End of File)**是一个宏定义,其真实值根据不同平台有差异,通常为-1。表示操作系统无法从数据源获取更多数据的情况,数据源一般为文件或流。
**EOT(End-of-Transmission)**传输结束字符,是一个控制字符,表示传输的结束。ascii码为04
‘\n’ 在文本文件中,除了最后一行,其余的每一行行尾都有一个换行符,即’\n’,ascii码为10
‘\0’ 等价于NULL,在c语言中,并不存在真正的字符串类型。c语言中的字符串其实是char*指向的地址到’\0’前的字符,字符串的长度并不包括’\0’。例如:
1 | char *s = "hello\0world"; //表示字符串 hello \0位字符串结束符 |