摘要: 题目:现在有两个排好序的整数数组,a[N]和b[N],要求写一个函数,功能为返回两个数组中第N大数和第N+1大数的中间值,即求解两者的和除以2。函数原型:double getMedian( int a[], int b[] );下面,我们先来分析一个类似的问题,假设a和b都是升序的,分别有n1和n2个元素,求两个数组合并后第k大元素值。分别取两个数组中间索引的数,a[x]和b[y],比较两个数的大小:if( a[x] <= a[y] )——————————————————————————————————————————————————————————————如果k <= x+y+1 阅读全文
posted @ 2011-10-18 20:14 qi09 阅读(7351) 评论(1) 推荐(1)
摘要: 1、冒泡排序冒泡排序是一种算法比较简单的排序,它的主要思想是:第一遍循环时,第一个元素和第二个元素比较,较小的放在前面,较大的数放在后面;第二个元素和第三个元素比较,较小的放在前面,较大的放在后面;直至倒数第二个元素和倒数第一个元素比较,这样最大的那个元素就会在最后的位置;同理,再进行第二次循环,倒数第二个元素的位置会存放第二大数。C语言的算法实现如下:void bubblesort( int a[], int n ) { int i, j; int temp, flag; for( i = 0; i < n - 1; i++ ) { flag = 1; ... 阅读全文
posted @ 2011-10-17 09:55 qi09 阅读(270) 评论(0) 推荐(0)
摘要: 对于编程这回事,开窍有早晚之分,我是属于后者。但终归是开窍了。加油! 阅读全文
posted @ 2011-09-14 21:46 qi09 阅读(196) 评论(0) 推荐(0)
摘要: 问题一:编译线程c文件时,结果出现如下错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join'问题原因:pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。问题解决: 在编译中要加 -lpthread参数 gcc thread.c -o thread -lpthread 阅读全文
posted @ 2011-06-27 11:00 qi09 阅读(273) 评论(0) 推荐(0)
摘要: 栈的本质是一个表,但它限制插入和删除只能在一个位置上进行。这个特殊的位置是表的末端,叫做栈顶(top)。栈的基本操作有Push和Pop两种。这里有两种比较流行的栈的实现方式:一种是用链表实现,另一种是用数组实现。这里,我们先给出链表实现的c源码。stackList.h头文件定义如下。具体内容可参见《数据结构与算法分析:c语言描述》第三章。 1 #ifndef _STACK_LIST_H 2 #define _STACK_LIST_H 3 4 typedef int ElementType; 5 typedef struct _Node 6 { 7 ElementType Element; 8 阅读全文
posted @ 2011-06-01 20:24 qi09 阅读(3354) 评论(0) 推荐(1)
摘要: 可以用表来定义一种关于一元多项式的抽象数据类型。若最高幂数比较小,使用数组来存储幂系数是比较简单的;但如果出现幂数跨度比较大的情况,使用链表结构存储是比较合适的。具体内容参见《数据结构与算法分析:c语言描述》第三种。这里先实现了数组存储数据的简单情况。代码如下:#include <stdio.h>#include <stdlib.h>#define MaxDegree 10typedef struct _Polynomial{ int CoeffArray[ MaxDegree + 1 ]; int HighPower;} * Polynomial;//Maxint M 阅读全文
posted @ 2011-05-31 21:23 qi09 阅读(398) 评论(0) 推荐(0)
摘要: 表是一种常用的数据结构,它支持的基本操作有插入和删除。最基本地可以用数组来实现表结构,但因为数组中的数据都是连续存储的,若动态指定数组,会造成空间的浪费。而且在有序插入删除操作时,都需要调整元素在数组中的位置,因此,一般不使用数组来实现表结构。一般来说,使用链表来实现表结构。下面的程序中写了16个常用的链表函数,它源于http://www.bccn.net/Article/kfyy/cjj/jszl/200708/5227_2.html这篇文档,但上述文档中实现的是一个无表头的线性表结构。本文中对上述程序稍作修改,实现了一个有表头的链表结构。具体代码如下: 1 /* 2 * linear li 阅读全文
posted @ 2011-05-31 11:25 qi09 阅读(436) 评论(0) 推荐(0)
摘要: 一、堆排序思想假定我们要排序的内容存放在数组中,希望按照从小到大的顺序排列。此时需要一个(max)heap协助。首先,把数组中的内容构建成堆。那么,堆顶的数即为数组的最大值。其次,删除堆顶,并且对堆重新排序,直至堆中的数都被删除。依次删除的值即为从大到小排序。具体的算法思想参见《数据结构与算法》一书,7.5节内容。二、c代码实现#include <stdio.h>#include <stdlib.h>#define LeftChild(i) (2 * ( i ) + 1)typedef int ElementType;void Swap(ElementType *x, 阅读全文
posted @ 2011-05-28 21:49 qi09 阅读(569) 评论(0) 推荐(0)
摘要: From:http://www.51testing.com/?227476/action_viewspace_itemid_99672.html1、总结背景在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本案例基于RedHat AS4讲解环境变量定制的问题。2、变量简介Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个 阅读全文
posted @ 2011-05-28 17:58 qi09 阅读(419) 评论(0) 推荐(0)
摘要: 编辑.vimrc这样文件在其中加入如下两行就可以了,此法对#号提示符下的操作无效。let &termencoding=&encodingset fileencodings=utf-8,gbk,ucs-bom,cp9361、配置文件的位置 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。2、设置语法高亮显示1) 打开vimrc,添加以下语句来使得语法高亮显示:syntax on2) 如果此时 阅读全文
posted @ 2011-05-27 09:28 qi09 阅读(8560) 评论(0) 推荐(2)