題目:生成乙個隨機整數的有序集合
1 線性結構
陣列 鍊錶
2 二分搜尋樹
3 位向量
#include using namespace std;
enum ;
class intsetbitvec
private:
int n,hi,*x;
void set(int i)
void clr(int i)
int test(int i)
};intsetbitvec::intsetbitvec(int maxelements, int maxval)
void intsetbitvec::report(int *v)
void intsetbitvec::insert(int t)
set(t);
n++;
}void genset(int m,int maxval)
};class intsetbins
private:
node* rinsert(node* p,int t);
int n,bins,maxval;
node **bin,*sentinel;//sentinel 哨兵
};intsetbins::intsetbins(int maxelement,int pmaxval)
else if (p->val>t)
return p;
}void intsetbins::insert(int t)
void genset(int m,int maxval)
}int _tmain(int argc, _tchar* argv)
5 上面這些資料結構和演算法的平均效能如下
集合表示 初始化 insert report 總時間 空間
陣列 1 m m o(m*m) m
鍊錶 1 m m o(m*m) 2m
二叉樹 1 logm m o(mlogm 3m
箱 m 1 m o(m) 3m
位相量 n 1 n o(n) n/b
將遞迴函式重寫為迭代器版本可以使鍊錶的速度提公升為原來的3倍,但只能使箱提速10%.對於大多數資料結構來說,引入哨兵可以獲得清晰、簡單的**,並縮短執行時間。
第十三章 使用者評論(一)
注意 user模型與comment模型做為1這一側,還需要定義關係 通常我們在多一側定義外來鍵後,選擇在一這一側定義關係 class user usermixin,db.model tablename users comments db.relationship comment backref au...
c primer plus 第十三章課後程式設計6題
include include include define len 40 int main void 開啟檔案並輸入內容 if in fopen name,w null printf 請輸入檔案內容 n while ch getc stdin eof putc ch,in if fclose in...
c primer plus 第十三章課後程式設計7題
a 交替列印倆個檔案的每一行 include include int main int argc,const char ar if fc fopen ar 2 r null 如果第乙個檔案遇到換行符則列印第二個檔案內容,反之一樣 a 交替列印倆個檔案的每一行。利用檔案指標的特性自動遞增的特點 do ...