第一部分 基础
第1章 开 篇3
1.1 一次友好的对话3
1.2 准确的问题描述4
1.3 程序设计4
1.4 实现概要6
1.5 原理7
1.6 习题8
1.7 深入阅读9
第2章 啊哈!算法11
2.1 三个问题11
2.2 无处不在的二分搜索12
2.3 基本操作的威力14
2.4 排序16
2.5 原理17
2.6 习题18
2.7 深入阅读20
2.8 变位词程序的实现(边栏)20
第3章 数据决定程序结构23
3.1 一个调查程序23
3.2 格式信函编程26
3.3 一组示例28
3.4 结构化数据29
3.5 用于特殊数据的强大工具30
3.6 原理32
3.7 习题33
3.8 深入阅读34
第4章 编写正确的程序37
4.1 二分搜索的挑战37
4.2 编写程序38
4.3 理解程序40
4.4 原理43
4.5 程序验证的角色44
4.6 习题45
4.7 深入阅读48
第5章 编程小事49
5.1 从伪代码到C程序49
5.2 测试工具51
5.3 断言的艺术53
5.4 自动测试55
5.5 计时56
5.6 完整的程序58
5.7 原理59
5.8 习题59
5.9 深入阅读61
5.10 调试(边栏)61
第二部分 性能
第6章 程序性能分析65
6.1 实例研究65
6.2 设计层面67
6.3 原理69
6.4 习题69
6.5 深入阅读70
第7章 粗略估算71
7.1 基本技巧72
7.2 性能估计74
7.3 安全系数76
7.4 Little定律78
7.5 原理79
7.6 习题79
7.7 深入阅读80
7.8 日常生活中的速算(边栏)81
第8章 算法设计技术83
8.1 问题及简单算法83
8.2 两个平方算法84
8.3 分治算法86
8.4 扫描算法87
8.5 实际运行时间88
8.6 原理90
8.7 习题91
8.8 深入阅读92
第9章 代码调优95
9.1 典型的故事95
9.2 急救方案集锦96
9.3 大手术——二分搜索101
9.4 原理105
9.5 习题106
9.6 深入阅读108
第10章 节省空间109
10.1 关键在于简单109
10.2 示例问题110
10.3 数据空间技术113
10.4 代码空间技术116
10.5 原理118
10.6 习题119
10.7 深入阅读120
10.8 巨大的节省(边栏)121
第三部分 应用
第11章 排 序125
11.1 插入排序125
11.2 一种简单的快速排序127
11.3 更好的几种快速排序130
11.4 原理133
11.5 习题133
11.6 深入阅读135
第12章 取样问题137
12.1 问题137
12.2 一种解决方案138
12.3 设计空间139
12.4 原理142
12.5 习题143
12.6 深入阅读144
第13章 搜 索145
13.1 接口145
13.2 线性结构147
13.3 二分搜索树151
13.4 用于整数的结构153
13.5 原理155
13.6 习题156
13.7 深入阅读157
13.8 一个实际搜索问题(边栏)157
第14章 堆161
14.1 数据结构161
14.2 两个关键函数163
14.3 优先级队列166
14.4 一种排序算法169
14.5 原理171
14.6 习题172
14.7 深入阅读174
第15章 字符串175
15.1 单词175
15.2 短语179
15.3 生成文本182
15.4 原理187
15.5 习题188
15.6 深入阅读189
第1版跋191
第2版跋195
附录A 算法分类197
附录B 估算测试203
附录C 时空开销模型205
附录D 代码调优法则211
附录E 用于搜索的C++类217
部分习题提示223
部分习题答案229
索引259
良好的 编程基础 看到这里 笑了
时间: 2024-12-13 16:08:41
良好的 编程基础 看到这里 笑了的相关文章
1.5编程基础之循环控制_29:数字反转
/* 1.5编程基础之循环控制 29:数字反转 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个整数,请将该数各个位上数字反转得到一个新数. 新数也应满足整数的常见形式,即除非给定的原数为零, 否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入 输入共 1 行,一个整数N. -1,000,000,000 ≤ N≤ 1,000,000,000. 输出 输出共 1 行,一个整数,表示反转后的新数. 样例输入 样例 #1: 123 样例 #2: -380 样例输出 样
网络编程基础
网络编程基础 1.套接字概念 Linux环境下使用套接字进行进程之间的通信.用过套接字的接口,其他进程的位置对于应用程序来讲是透明的.相互通信双方端点都有一个套接字,双方如果要进行通信,通过套接字建立桥梁,双方就可以通信了. 类似文件一样,套接字也有一个套接字描述符,应用程序可以像操作文件一样操作套接字.在进行网络通信的过程中,用户感觉就是在操作文件一样,这是Linux将外部设备抽象为一个文件的好处. 2.字节序 不同主机的体系结构不同,所采用的数据存储方式不同.网络中,进程之间的通信是跨主机的
多线程编程基础知识
多线程编程基础知识 http://www.cnblogs.com/cy163/archive/2006/11/02/547428.html 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.因此掌握
shell 脚本编程基础
一.编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 1.程序的执行方式 计算机:运行二进制指令: 编程语言: 低级:汇编 高级: 编译:高级语言–>编译器–>目标代码 java,C# 解释:高级语言–>解释器–>机器代码 shell, perl, python 2.编程基本概念 编程逻辑处理方式: 顺序执行 循环执行 选择执行 shell编程:过程式.解释执行 编程语言
DAY9:bash脚本编程基础(1)
内容主要为: 一.编程基础 二.shell脚本及其基本格式 三.变量 四.运算 五.条件测试 六.流程控制 一.编程基础 1)程序 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令(C,bash) 对象式:以数据为中心,指令服务于数据 (java,C++,Python) shell程序:提供了编程能力,解释执行 2)程序的执行方式 计算机:运行二进制指令: 编程语言: 低级:汇编 高级: 编译:高级语言-->编译器-->目标代码 java,C# 解释:高级语言-->
iOS开发网络篇—网络编程基础
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐
LINQ to XML 编程基础
1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocument() { string path = @"d:\website"; XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XEle
Java网络编程基础(六)— 基于TCP的NIO简单聊天系统
在Java网络编程基础(四)中提到了基于Socket的TCP/IP简单聊天系统实现了一个多客户端之间护法消息的简单聊天系统.其服务端采用了多线程来处理多个客户端的消息发送,并转发给目的用户.但是由于它是基于Socket的,因此是阻塞的. 本节我们将通过SocketChannel和ServerSocketChannel来实现同样的功能. 1.客户端输入消息的格式 username:msg username表示要发送的的用户名,msg为发送内容,以冒号分割 2.实现思路 实现思路与Java网络
LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人