原创 哈希衝突之散列法

哈希碰撞/哈希衝突:不同的Key值經過哈希函數Hash(Key)處理以後可能產生相同的值哈希地址,我們稱這種情況爲哈希衝突。任意的散列函數都不能避免產生衝突。 #include<iostream> #include<vector> u

原创 信號的產生以及處理方式(一)

/*************************************************************************************************************/ 爲了理解信號,

原创 【C++】位圖

#include<iostream> using namespace std; class BitMap { public: BitMap(size_t size) { _capacity = size / 32 + 1;

原创 計數排序

void CountSort(int a[], int len) { int max=0, min=0;//求差值,開闢此空間來計數 for (int i = 0; i < len; i++) { if (a[i]>max)

原创 信號未決與阻塞(二)

/**************************************************************************************************************/ 一、幾個基本

原创 緩衝方式、文件描述符及文件操作

***********************************************************************************************************************

原创 堆排序

void AdjustDown(int a[], int root, int size) //調整堆 { int left = root * 2 + 1; int right = left + 1; int key = l

原创 把二叉樹打印成多行

題目描述:從上到下按層打印二叉樹,同一層的結點按從左到右的順序打印,每一層打印到一行,例如: void Print() { if (_root == NULL) return; queue<Node*>q; q.push(_ro

原创 選擇排序

void SelectSort(int a[], int size) { assert(a); int min = 0; int max = size - 1; while (min < max) { for (int i

原创 快速排序

int GetMid(int a[], int left, int right)//三數取中 { int mid = left + (right - left) / 2; if (a[left] <a[right]) { if

原创 歸併排序

//合併兩個有序數組 void Merge(int a[], int left, int mid, int right) { assert(a); int* tmp = new int[right - left + 1](); in

原创 動態內存管理

自主實現動態內存管理,利用malloc/free模擬C++中的new/delete,利用單鏈表檢查申請內存與釋放內存的情況. 當是爲內置類型申請內存空間時,malloc/free可以完成new/delete的功能;而當爲自定義類型申請內存

原创 基數排序

基數排序思想及分析: void Radix_sort(int a[], int size ) { int *count = new int[10]; int *bucket = new in

原创 直接插入排序

設數組爲a[0…n-1]。 1.      初始時,a[0]自成1個有序區,無序區爲a[1..n-1]。令i=1 2.      將a[i]併入當前的有序區a[0…i-1]中形成a[0…i]的有序區間。 3.      i++並

原创 冒泡排序

void BubbleSort(int a[], int size) { assert(a); int i = size - 1; int j = 0; while (i) { int exchange = 0; for