05 2011 档案
摘要:希尔排序(Shell Sort)又称为“缩小增量排序”。是1959年由D.L.Shell提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。具体做法:首先确定一组增量d0,d1,d2,d3,...,dt-1()其中n>d0>d1>...>dt-1=1),对于i=0,1,2,...
阅读全文
摘要:插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止。 算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是 1 + 2 + 3 + …… + N = O(N ^ 2)的复杂度。View Code 1 #include <iostream> 2 3 using namespace std; 4 5 void insertSort(int a[],int n) 6 { 7 int j,i,key;
阅读全文
摘要:1、算法思想分治发自顶而下实现归并排序:(1)分治法的三个步骤 设归并排序的当前区间是R[low..high],分治法的三个步骤是:①分解:将当前区间一分为二,即求分裂点②求解:递归地对两个子区间R[low..mid]和R[mid+1..high]进行归并排序;③组合:将已排序的两个子区间R[low..mid]和R[mid+1..high]归并为一个有序的区间R[low..high]。 递归的终结条件:子区间长度为1(一个记录自然有序)。(2)具体算法 void MergeSortDC(SeqList R,int low,int high) {//用分治法对R[low..high]进行二路归并
阅读全文
摘要:已知数组int[] dec={0,5,2,9,7,4,3};用快速排序算法按升序对其进行排列,并返回数组算法过程 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=1,J=N; 2)以第一个数组元素作为关键数据,赋值给X,即 X=A[1]; 3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换; 4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找
阅读全文
摘要:冒泡排序是一种交换排序。 交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时则进行交换,知道没有反序的记录为止。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 冒泡排序:算法描述省略就了。。。 算法c实现: 1 #include <iostream> 2 using namespace std; 3 4 void bubbleSort(int a[],int n) 5 { 6 int i,j,tmp; 7 int exch = 0; 8 for(i = 0;i < n;i++) 9 {10 exch = 0; //交换标志11 for(j
阅读全文
摘要:1一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?>>>4/17 = C(4,1)*C(50,11)/C(52,13)2、给你n个数,其中有且仅有一个数出现了奇数次,其余的数都出现了偶数次。用线性时间常数空间找出出现了奇数次的那一个数。>>>利用异或运算的一个神奇性质,“数A两次异或同一个数B,结果还是数A,这两次异或运算不一定要是连续的”,从头到尾进行一次异或,最终的结果就是那个出现了奇数次的数。3,上千万条记录,统计出重复记录最多的前N条。>>> 先散列,统计出每条记录的重复数目,
阅读全文
摘要:网络协议是为网络数据交换而制定的规则 约束 和标准,网络协议有三要素:语义 语法 时序1. 语义:用于解析比特流的每一部分的意义,主要描述的是做什麽;2. 语法:用于数据与控制信息的结构与格式,以及数据出现的顺序的意义,主要描述的是如何做;3. 时序:事件实现顺序的详细说明,主要描述的是何时做。
阅读全文
摘要:d:表示是一个目录(directory),事实上在ext2fs中,目录是一个特殊的文件。-:表示这是一个普通的文件。l: 表示这是一个符号链接(symbol link)文件,实际上它指向另一个文件。b、c:分别表示区块(block)设备和字符(character)设备,是特殊类型的文件。s、p:这些文件关系到系统的数据结构和管道(pipe),通常很少见到。
阅读全文
摘要:在Linux操作系统中,如果用户想要通过快捷键的方式强制当前进程转为后台,并使之停止可以使用CTRL+Z来实现,接下来让我们举例说明:使进程恢复运行(后台)(1)使用命令bgExample:zuii@zuii-desktop:~/unp/tcpcliserv$./tcpserv01*这里使用CTRL+Z,此时serv01是停止状态*[1]+ Stopped ./tcpserv01zuii@zuii-desktop:~/unp/tcpcliserv$bg [1]+ ./tcpserv01 & *此时serv01运行在后台*zuii@zuii-desktop:~/unp/tcpcliser
阅读全文
摘要:Ctrl+C:送SIGINT信号,默认进程会结束,但是进程自己可以重定义收到这个信号的行为。Ctrl+Z:送SIGSTOP信号,进程只是被停止,再送SIGCONT信号,进程继续运行。
阅读全文
摘要:管道有种类型,命名管道和匿名管道。匿名管道用于父进程和子进程之间,命名管道用于一个计算机上平行的进程之间。1. 可用pipe系统调用在父子进程间创建管道,它返回一对文件描述符:函数调用传递一个含有两个整数的数组,如果运行成功,返回两个文件描述符,数组中第一个文件描述符用用于只读,第二个只写。因为子进程可以继承父进程的文件描述符,父进程可以在fork之前创建管道以用于父子进程的通信。2. 命名管道通过mkfifo或mknod函数在磁盘上创建了一些特殊文件来进行识别。mkfifo和mknod一般都可以用于shell命令使用。一个命名管道可以被打开和读写,就像一个普通文件使用open read w.
阅读全文
摘要:硬链接系统调用link在文件系统结构中将一个文件链接到另外一个新的名字上,也就是为被链接文件的索引节点创建一个新的目录项。通过链接操作,一个文件可以有两个以上的不同名字,系统可以通过其中任意一个名字来访问文件。内核并不知道哪个名字是最初的文件名。这种为索引节点创建新目录项的链接方式称为“硬链接”。一个给定的索引节点可以有任意数目的硬链接,该索引节点一直存在于文件系统,直到所有的硬链接消失。硬链接的局限性:只能给文件建立硬链接,而不能给目录建立硬链接。即使. 和 .. 是系统给目录创建的硬链接,也不允许用户创建自己的硬链接。硬链接不能跨文件系统。符号链接与 “硬链接”类似,也为新名字创建一个新的
阅读全文
摘要:解压 rar x filename压缩 rar a filename
阅读全文
摘要:友元函数是一种在类外部定义、在类内部声明的函数。友元函数不是成员函数,但是它可以访问类中的私有成员。友元函数的作用在于提高程序的运行效率,但是它破坏了类得封装性和隐藏性。
阅读全文

浙公网安备 33010602011771号