2011年4月27日
摘要: 快速排序,是分治递归的应用。算法的时间复杂性为:O(nlogn)。算法的递归深度接近于logn。因此,所需要的工作单元为O(logn)。//快速排序#include<iostream.h>intcount=0;voidswap(int&a,int&b){inttemp;temp=a;a=b;b=temp;}intsplit(intarray[],intlow,inthigh){inti=low;//保存枢点元素的位置,初始值为lowintj;intx=array[low];for(j=low+1;j<=high;j++){if(array[j]<=x){ 阅读全文
posted @ 2011-04-27 19:30 COS 阅读(359) 评论(0) 推荐(1)
摘要: 一、如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针) struct node { char val; node* next;}bool check(const node* head) {} //returnfalse : 无环;true: 有环 一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):bool check(const node* head) { if(head==NULL) return false; node *low=head, *fast=head->next; while(fast!=N 阅读全文
posted @ 2011-04-27 09:01 COS 阅读(423) 评论(2) 推荐(1)
摘要: 我们都知道STL标准模板库非常强调软件的复用,traits技术是采用的重要手段。traits的中文意思就是特性,traits就像特性萃取机,提取不同类的共性,以便能统一处理。traits依靠显示模板特殊化来把代码中因类型不同而发生变化的片段拖出来,用统一的接口来包装。这个接口可以包含一个C++类所能包含的任何东西,如内嵌类型、成员函数、成员变量。作为客户的模板代码,可以通过traits模板类所公开的接口来间接访问。下面是一个简单实例:已知整型数组类CIntArray,浮点数组类CFloatArray,求整型或浮点数组的和乘于相应的倍数并输出。#include<iostream>us 阅读全文
posted @ 2011-04-27 08:09 COS 阅读(799) 评论(1) 推荐(2)