原创 C++中內存(堆和棧)

一.在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區 1.棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變量的存儲區。裏面的變量通常是局部變量、函數參數等。2.堆,就是那些由new分

原创 關於二叉樹與樹(森林)的知識點詳解

1.二叉樹的遍歷及優缺點: 前序遍歷用來實現目錄結構的顯示。 中序遍歷用來做表達式,在編譯底層實現的時候,可以實現加減乘數 後序遍歷可以用來實現計算目錄內的文件,佔用的數據大小。 二叉樹最複雜的還是刪除,這裏特別說明一下,就像書中所說

原创 循環隊列

設計循環隊列的原因: 隊列的順序存儲結構稱爲順序隊列,順序隊列實際上是運算受限的順序表,和順序表一樣,順序隊列也是必須用一個向量空間來存放當前隊列中的元素。 入隊,出隊操作原理: 由於隊列的隊頭和隊尾的位置是變化的,因而要設兩個指針

原创 插入排序進行鏈表排序

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(i

原创 歸併排序

//堆排序的原理是遍歷數組中的值,得到第一個值爲最小,與最後一個值對換,再次遍歷,第一個值與倒數第二個值替換,以此類推! #include <stdio.h> #include <stdlib.h> #define MAX 255 in

原创 歸併排序

#include <stdio.h> #include <stdlib.h> #define MAX 255 int R[MAX]; void Merge(int low,int m,int high) {/* 將兩個有序的子文件R[l

原创 希爾排序

void shell_sort(vector<int>&array, int n) { if (array.empty()) { return; } int j, gap; for

原创 C#命名空間

轉自:http://dev.yesky.com/msdn/192/2549192.shtml  命名空間提供了一種組織相關類和其他類型的方式。與文件或組件不同,命名空間是一種邏輯組合,而不是物理組合。在C#文件中定義類時,可以把它包括在命

原创 排序鏈表

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(i

原创 插入排序、希爾排序、冒泡排序、快速排序、選擇排序、堆排序、歸併排序

插入排序方法:時間複雜度O(n^2)的穩定排序:每步將一個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完爲止。 直接插入排序的算法思路: (1) 設置監視哨r[0],將待插入紀錄的值賦值給r[0]

原创 建造者模式(builder),橋樑模式(bridge mode),命令模式(Command mode)

建造者模式,將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 說明:CCarModel實現模板方法,Builder負責開始建造產品。建造產品時,構建的順序由Director或main決定。 注意:建造者模式和

原创 C++中模版的使用

模板(Template)指C++程序設計語言中的函數模板與類模板,是一種參數化類型機制。模板是C++泛型編程中不可缺少的一部分。 C++ templates enable you to define a family of functio

原创 TCP鏈接(三次握手)和釋放(四次握手)

轉自:http://longzxr.i.sohu.com/blog/view/189988839.htm TCP報文段首部格式: 序號:本報文段所發送的數據的第一個字節的序號。 確認號ack:期待收到對方下一個報文段的第一個數據字節

原创 堆、歸併排序

數據結構中的堆,是一顆完全二叉樹,以連續地址存儲。插入的方式是,先將元素放到vector尾部,然後vector不斷和父母節點比較交換,直到找到合適的位置,所以時間複雜度是O(lgN),也就是樹的高度。刪除第一個元素的方式是,先將最後的元素

原创 快速排序

#include <iostream> #include <vector> using namespace std; class Quick_sort{ public: void quickSort(vector<int>&s,