- 博客(26)
- 资源 (4)
- 收藏
- 关注
原创 常见排序算法
索引1. 插入排序 1.1 直接插入 1.2 折半插入 1.3 希尔排序 2. 交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择排序 3.1 直接选择 3.2 堆排序 4. 归并排序 4.1 迭代归并 总结 1. 插入排序 思想:每步将一个待排序的对象, 按其排序码大小, 插入到前面已经排好序的一组对
2011-03-24 12:51:00
2280
原创 表达式求值(中缀表达式——后缀表达式——求值)
表达式求值,属于数据结构——栈的典型应用。使用后缀表达式的与原因,是因为在求值的过程中,不需要考虑操作符的优先级。(结合性仍需要考虑) 但是一般的书上只讲到如何处理二元操作符,并且结合性都是从左到右结合的。这里的实现能够处理一元操作符,并且能够处理从右向左结合的幂乘^操作符。功能需求 给定一个中缀表达式,求出该表达式的值。
2011-03-19 12:50:00
10647
1
原创 探讨关于 整数除法 和 取余 的映射规律
一、引子问题: 一个简化的日期问题: 假设每一个月都是30天。假设盘古开天辟地的时候,是计算时间的开始(按照习惯,该天成为第1天,但是注意在程序中,表示的数字并不一定是1)。这里要计算的问题是:给定一个是从世界开始的一个总天数,让你计算该天属于从世界开始的第几个月,并且在该月中是第几天?二、初步分析: 看了上面的问题,是不是觉得非常简单?是的,确实非常简单,
2011-03-14 12:41:00
3722
1
原创 C++的异常处理
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错误,但却
2011-03-10 12:46:00
26564
5
原创 最大子序列和问题 一步一步到最优
对于 一个求“最长子序列和”的问题,逐步深入分析,给出共四种方法,时间复杂度 从O(n^3), 到O(n^2), 到O(n*logn), 到O(n)。
2011-03-03 12:41:00
3177
原创 N人围圈,报数删除问题(约瑟夫问题)
N人围圈,报数删除问题,也就是“约瑟夫问题” 这是个比较简单,但却比较经典的问题。问题描述:n 个人围成一圈报数,报到 m 的人出列,要求计算删除顺序,并找到最后剩下的那个人。
2011-02-27 12:39:00
6438
原创 从一个计算 数组累加和 的小程序看 程序性能优化 的小技巧
从一个计算 “数组累加和” 的小程序看 “程序性能优化” 的小技巧。 主要包括以下几条: 1. 避免多余的函数调用; 2. 避免多余的条件判断和边界检查; 3. 利用局部变量保存中间计算结果;
2011-02-23 12:45:00
4492
原创 C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
本文目的:理清在各种继承时(单继承、多继承、虚继承),构造函数、复制构造函数、赋值操作符、析构函数的“执行顺序”和“执行内容”。
2011-02-18 12:07:00
8060
原创 C语言的命令行参数
命令行参数的最大作用就是让我们可以在程序之外控制程序,例如linux或者dos中我们经常使用的命令,从本质上将是一个程序;而我们使用的参数,就是该命令(对应的程序)的命令行参数。 正是由于命令行的这么重要的作用,所以它成为各种编程语言不可缺少的功能,只是实现细节上略有不同,但大体上都是一样的,而且都比较简单。 1. 先想一想 1.1 程序中在哪里接收命令行参数(where) 命令行参数,顾名思义,就是在命令行调用程序时传递的参数,那么谁来接收呢,
2011-02-13 12:38:00
12494
1
原创 C语言的预编译
Technorati 标签: C,预编译,宏,文件替换,条件编译 由“源代码”到“可执行文件”的过程包括四个步骤:预编译、编译、汇编、链接。所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对程序中的变量、函数等。 预编译指令的基本知识不作详细介绍,只稍作汇总,重点是后面的我能想到的 使用时的注意事项。 1. 基本内容 预编译指令基本分类如下 类别
2011-02-09 12:31:00
8596
原创 C语言的布尔类型(_Bool)
Technorati 标签: C,布尔,boolean,_Bool,stdbool.h 也许很多人都和我一样,从C99标准开始,不知道C语言已经有了布尔型,类型名字为“_Bool”。 在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,比如 a==b的返回结果,只有
2011-02-05 13:04:00
159763
9
原创 忽然回味C经历
不知何故,今日思绪乱飞,又回到了自己的大学时代。 从开始写博客以来,写的文章大多都与C语言有关,这是因为开始写博以后,不知从哪一天开始,突然来兴致,想复习一下被自己遗忘的C,重温一下这个无比基础而又强大的语言,这个带我入门的语言。 大一刚刚开学,军训期间领到了课本,在一摞书中,忽然注意到一本绿色的并且挺厚的书,大家可能也和我用的书一样,谭浩强老师的《C程序设计》。当时不知所云,翻看一看,更是迷茫,随机丢到一边。第一门专业课,现在回想,竟然记不清这门课的确
2011-02-01 12:48:00
2197
1
原创 C语言中结构体 自引用 和 相互引用
Technorati 标签: C语言,结构体,自引用,相互引用,self reference,mutual reference 结构体的自引用(self reference),就是在结构体内部,包含指向自身类型结构体的指针。 结构体的相互引用(mutual reference),就是说在多个结构体中,都包含指向其他结构体的指针。 1. 自引用 结构体 1.1 不使用typedef时 错误的方式: struct tag_1{ struct tag_1 A;
2011-01-27 11:52:00
25700
3
原创 回溯法解决“八皇后”问题
Technorati 标签: 回溯法,backtrack,八皇后,eight queens puzzle “回溯法”和“八皇后”问题本身不再多做介绍,相信很多人都知道,尤其是学习过数据结构的人。如果还不清楚可以google或者baidu一下,亦或是找本数据结构的书看一下。 “八皇后”问题:可以简单的理解为在一个8*8的棋盘上,放8个旗子(国际象棋中称为皇后queen),要求这8个棋子中任意两个都不在同一行、列、斜线上。 “回溯法”用在这里的思路是:
2011-01-23 12:47:00
2524
原创 C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型(下)
Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 3. 标识符的链接属性 主要用于处理多次声明相同的标识符名称后,如何判断这些标识符是否是同一个。 原文对链接属性(linkage)的定义如下:An identifier declared in different scopes or in the same scope more t
2011-01-20 13:40:00
7074
8
原创 C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型(上)
Technorati 标签: C,标识符,作用域,命名空间,链接属性,存储类型,scope,name space,linkage,storage durations,lifetime 无论学习哪一种语言,都免不了要讨论这些问题。而且这些问题,深究起来有时也让我们很迷惑。 标识符的定义无需多讲,只需注意不仅仅是指变量,还有函数。 1. 标识符的作用域 作用域是指允许对标识符进行访问的位置范围。按照C99(章节6.2.1),C语言的作用域共有 4 种类型:文
2011-01-16 14:44:00
8040
5
原创 为什么用 递归 计算“阶乘”和“斐波那契数列”是不合适的?
Technorati 标签: 递归,阶乘,斐波那契数列,fibonacci 《C和指针》的作者Kenneth A. Reek说,他认为这是很不幸的:“计算阶乘时不能提供任何优越之处;在斐波那契数列中,使用递归效率非常非常低”。 对于计算斐波那契数,使用递归和使用迭代的效率有可能相差几十万倍。
2011-01-12 14:41:00
4773
1
原创 C和Java中函数的可变参数列表
Technorati 标签: C语言,函数,可变参数列表,stdarg 所谓“可变参数列表”就是指函数的形参的数目和类型是不确定的。printf函数就是一个可变参数的函数,第一个参数是格式化字符串,后面可以跟任意数目的参数。而我们平时使用的函数,其参数的数目和类型都是固定的,一旦声明,无法改变。 1. 先看一个问题 计算一系列值的平均值,注意:这些值不是保存在数组中的,而是在参数中显示的传递。 常见的实现方式可能如下:/*参数: n_values 可变参数
2011-01-08 14:18:00
4812
原创 《C和指针》快速入门的例子分析及其扩展
Technorati 标签: C和指针;快速入门;例子;扩展;字符串 如果想深入理解C语言的指针,很多人会推荐你读《C和指针》。 本书在第一章给出了一个快速入门的例子,虽然作者的目的是让读者通过这个例子快速的了解C语言的语法情况,但是这个例子本身的处理逻辑、尤其是一些细节,还是比较晦涩难懂(尽管个人觉着这是一个不错的例子),希望这篇文章能够在逻辑上给需要的人提供一些帮助。至于语法方面,这里不再做解释,如果有需要的话,还是去读原书吧,书上比较详细。最后再总结一下来自练习题的
2011-01-04 12:27:00
3285
原创 Java中 String类、StringBuilder类、StringBuffer类 区别与如何选择
Technorati 标签: String,StringBuilder;StringBuffer,区别;选择 关于这三者的区别,我们从官方API上很容易找到答案。 这里做了一下比较,并写了点测试代码。 关于《Java中的String的 方法归类 及其 不可变性》参看本博客另一篇文章:http://blog.youkuaiyun.com/daheiantian/archive/2010/12/20/6097353.aspx 1. 概述: 1.1 String
2010-12-31 14:10:00
5670
1
原创 字符串赋值给字符指针(char *a="hello")的正确理解方式
Technorati 标签: 字符串,数组,地址,char *; 对于语句 char *a=“hello”; 对于这个声明方式,会造成的误解是:声明了一个字符指针,将“字符串”赋值给 指针表达式”*a”。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。 这里有两点需要考虑清楚的地方:①*a只是指向一个字符。举例如下: #include #include int main(void){ char *a="bcd"; print
2010-12-28 14:42:00
24594
3
原创 C语言有关指针的变量声明中的几个易错点
Technorati 标签: 指针,typedef,const,define 我们都知道,至少听说过指针对于C语言中的重要意义,但是在使用指针时却唱唱让我们痛不欲生,这里有几个在声明指针有关的变量时易错的地方。 1. int* 和 int * (注意空格的位置) 对于单变量声明,即一条语句中只声明一个指针变量的情况,没有区别;原因是C语言允许形式的自由性。即以下两种声明方式效果相同。 int *a;int* a; 对于一条语句中声明
2010-12-25 10:34:00
6882
原创 Java中的String的 方法归类 及其 不可变性
Technorati 标签: Java,String,方法,函数,归类,不可变性 可以证明,字符串操作是计算机程序设计中最常见的行为。——摘自《java编程思想》 英文:String manipulation is arguably one of the most common activities in computer programming. ——摘自《Thinking in Java》 上面这句话是Bruce Eckel(作者,绝对的牛人),在
2010-12-20 14:52:00
3655
原创 C语言中鲜为人知的“三字母词” (trigraph sequences)
Technorati 标签: C语言,三字母词,trigraph sequences,三联符序列,C99,ANSI C 在ANSI标准中,定义了“三字母词”,或者成为“三联符序列”,英文为"trigraph sequences"。目的主要是为了在一些特定的字符集中,比如一些七位代码集中,解决一些特定字符的输入问题。 也许是由于这些字符集我们基本上用不到,所以在大多数C语言的书籍中,我们都看不到对“三字母词”的讲解。这里资料来源于参考ANSI C99标准(即传说中的《A
2010-12-17 14:57:00
12890
4
原创 MySQL官方参考文档学习笔记——第3章
MySQL官方参考文档学习笔记——第3章Technorati 标签: MySql 官方 参考文档 Reference Manual 学习笔记 第3章 写在前面:读书就要做笔记,这篇文章是读MySQL官方参考手册后做的笔记,其中加入了自己的一些总结和汇总。 目录 MySQL官方文档第三章 1 连接和断开 1.1 连接 1.2 断开 2 命令基本原则 2.1 几条基本特征 2.2 提示符 3 创建并使用数据库 3.1
2010-12-10 14:41:00
3549
原创 linux的文件属性和权限学习——分析ls命令结果
最近阅读《鸟哥的linux私房菜》,确实是一本好书,使自己在文件属性和权限方面有了较深的理解,总结如下。(注:本篇文章的图片来自于《鸟哥的linux私房菜》一书)一、提纲本篇文章主要包含以下几个部分:1. 用户和用户组的概念;2. 文件属性;3. 目录与一般文件的区别;4. ls命令的使用详解; 二、用户和用户组 linux的系统是“多用户、多任务环境”的,也就是说“linux系统允许多个用户同时使用系统,并且可以同时执行不同的任务”。所以为了确保各个用户的文件安全, linux系统
2010-10-29 19:56:00
8784
3
程序员面试 九阴真经
2010-04-02
程序员面试之葵花宝典
2010-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人