代码改变世界

随笔分类 -  软件工程师基本功

程序员必知8大排序3大查找(三)

2012-05-11 07:45 by javaspring, 305 阅读, 收藏,
摘要: 前两篇《程序员必知8大排序3大查找(一)》《程序员必知8大排序3大查找(二)》三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表(以后谈)一、顺序查找的基本思想:从表的一端开始,顺序扫描表,依次将扫描到的结点关键字和给定值(假定为a)相比较,若当前结点关键字与a相等,则查找成功;若扫描结束后,仍未找到关键字等于a的结点,则查找失败。说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效率低。适用于线性表的顺序存储结构和链式存储结构。计算平均查找长度。例如上表,查找1,需要1次,查找2需要2次,依次往下推,可知查找16需要16次,可以看出,我们只 阅读全文

程序员必知8大排序3大查找(二)

2012-05-07 07:45 by javaspring, 138 阅读, 收藏,
摘要: 《程序员必知8大排序3大查找(一)》《程序员必知8大排序3大查找(三)》本文我们先把剩余的三大排序说完,然后讨论一下排序的稳定性问题,最后再总结一下排序的时间复杂度和空间复杂度。(1到5见上篇)6、快速排序(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。(2)实例:上图中将待排序列分成两部分,一部分比基准元素小,一部分大于基准元素,然后对这两部分重复上图的求解过程。(这只是快速排序的一种实现方式,个人认为比较容易理解 阅读全文

程序员必知8大排序3大查找(一)

2012-05-04 07:44 by javaspring, 132 阅读, 收藏,
摘要: 第二篇《程序员必知8大排序3大查找(二)》《程序员必知8大排序3大查找(三)》每天都在叫嚣自己会什么技术,什么框架,可否意识到你每天都在被这些新名词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。要编写出优秀的代码同样要扎实的基础,如果排序和查找算法学的不好,怎么对程序的性能进行优化?废话不多说,本文要介绍的这些排序算法就是基础中的基础,程序员必知!1、直接插入排序(1) 阅读全文

作业管理

2012-04-25 08:13 by javaspring, 359 阅读, 收藏,
摘要: 一、概念:1、作业:由三部分构成,即程序,数据和作业说明书,它是用户在完成一项任务过程中要求计算机系统所做工作的集合。2、作业管理:是对用户提交的诸多作业进行管理,包括作业的组织、控制、和调度等,尽可能高效地利用整个系统的资源。3、作业的几种状态:1)提交状态:作业从输入设备到外存的过程。2)后备状态:当作业全部信息进入外存后,系统为该作业建立一个作业控制块(JCB,作业名,作业状态,资源要求,作业类型等等作业信息,以便被系统识别)3)执行状态:后背作业被作业调度程序选中分配了必要的资源并进入内存,建立进程。(涉及进程管理)4)完成状态:当作业正常运行结束,它所占用的资源尚未全部被系统回收时的 阅读全文

程序设计语言

2012-04-16 11:13 by javaspring, 149 阅读, 收藏,
摘要: 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。 阅读全文

操作系统

2012-04-09 07:38 by javaspring, 160 阅读, 收藏,
摘要: 操作系统(Operating System,OS)是计算机系统中的核心系统软件,负责管理和控制计算机系统中硬件和软件资源,合理地组织计算机工作流程和有效利用资源,在计算机与用户之间起接口作用。 阅读全文

计算机体系结构与主要硬件组成

2012-04-07 17:32 by javaspring, 159 阅读, 收藏,
摘要: 计算机体系结构:计算机体系结构是指那些对程序员可见的系统属性,还包括设计思想与体系结构。 阅读全文

数据结构基本知识点

2012-04-05 14:32 by javaspring, 159 阅读, 收藏,
摘要: 数据结构:数据元素的集合(或数据对象)及元素之间的相互关系和构造方法。 阅读全文

软考复习

2012-03-31 10:05 by javaspring, 218 阅读, 收藏,
摘要: 这几天一直在看一些基础知识,有关操作系统的,进程,存储,作业管理,文件管理等。有关软件工程的,这部分相对来说比较简单,因为有过去学习的基础,算是复习吧。数据库这部分也一样,大部分大内容算是复习,对于关系代数,元组演算,感觉比较陌生,不明白他们到底有什么用。多媒体技术只是笼统的过了一遍,知道个大概,对于音频,视频,图像的原理还是不清楚。现在看到了组成原理与体系,流水线,高速缓存,知道他们有什么作用,但是很好奇,在现实硬件中,他们到底是怎么实现的。软考复习有一段时间了,感觉都是理论支撑,跟实际应用的联系把握不好,感觉两者之间还是有很大距离,不知道该怎么弥补这段差距。争取在清明节结束之前,把视频看完 阅读全文