原创 動態鏈接庫DLL基礎編程

(由於原文部分代碼在VC下存在書寫方式及編譯問題,所以進行了修正) 本文對通用的DLL技術做了一個總結,並提供了源代碼打包下載,下載地址爲: http://www.blogjava.net/Files/wxb_nudt/DLL_SRC

原创 斐波那契查找(FibonacciSearch)

說明 二分搜尋法每次搜尋時,都會將搜尋區間分爲一半,所以其搜尋時間爲O(log(2)n),log(2)表示以2爲底的log值,這邊要介紹的費氏搜尋,其利用費氏數列作爲間隔來搜尋下一個數,所以區間收斂的速度更快,搜尋時間爲O(logn)

原创 合併排序(MergeSort)

說明 之前所介紹的排序法都是在同一個數組中的排序,考慮今日有兩組或兩組以上的數據,它可能是不同數組中的數據,或是不同檔案中的數據,如何爲它們進行排序? 解法 可以使用合併排序法,合併排序法基本是將兩組已排序的數據合併,並進行排序,如果所

原创 插補法查找(InterpolationSearch)

說明 如果待查找的數據分佈平均的話,可以使用插補(Interpolation)法查找,在搜尋的對象大於500時,插補法查找會比二分法查找來的快速。 方法 插補法查找是以數據分佈的近似直線來作比例運算,以求出中間的索引並進行數據比對,如果

原创 順序查找(LinearSearch)

說明 搜尋的目的,是在數據中尋找指定的數據,而當中順序搜索是最基本的搜尋法,只要從數據開頭尋找到最後,看看是否找到數據即可。(這裏跟原文有所區別,順序查找不需要[已排序數據]) 方法 初學者看到順序搜索,多數都會使用以下的方式來進行搜尋

原创 二分法查找(BinarySearch)

說明 如果搜尋的數列已經有排序,應該儘量利用它們已排序的特性,以減少搜尋比對的次數,這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。 方法 在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數

原创 快速排序(QuickSort)

快速排序法(一) 說明 快速排序法(quick sort)是目前所公認最快的排序方法之一(視解題的對象而定),雖然快速排序法在最差狀況下可以達O(n2),但是在多數的情況下,快速排序法的效率表現是相當不錯的。快速排序法的基本精神是在數列中

原创 sizeof與strlen的區別與聯繫

一、sizeof    sizeof(...)是運算符,在頭文件中typedef爲unsigned int,其值在編譯時即計算好了,參數可以是數組、指針、類型、對象、函數等。    它的功能是:獲得保證能容納實現所建立的最大對象的字節大

原创 關於函數對象和調用操作符

函數對象和調用操作符可以爲類類型的對象重載函數調用操作符。一般爲表示操作的類重載調用操 作符。例如,可以定義名爲 absInt 的結構,該結構封裝將 int 類型的值轉換 爲絕對值的操作: struct absInt { int ope

原创 基數排序(RadixSort)

說明 在之前所介紹過的排序方法,都是屬於「比較性」的排序法,也就是每次排序時 ,都是比較整個鍵值的大小以進行排序。 這邊所要介紹的「基數排序法」(radix sort)則是屬於「分配式排序」(distribution sort),基數排

原创 利用棧將 (中綴表達式) 轉換成 (後綴表達式)

目的: 將中綴表達式(即標準形式的表達式)轉換爲後綴式。 例子:a+b*c+(d*e+f)*g轉換成abc*+de*f+g*+   轉換原則: 1.當讀到一個操作數時,立即將它放到輸出中。操作符則不立即輸出,放入棧中。遇到左圓

原创 堆積排序(HeapSort) - 改良的選擇排序

說明 選擇排序法的概念簡單,每次從未排序部份選一最小值,插入已排序部份的後端,其時間主要花費於在整個未排序部份尋找最小值,如果能讓搜尋最小值的方式加 快,選擇排序法的速率也就可以加快,Heap排序法讓搜尋的路徑由樹根至最後一個樹葉,而不是

原创 表驅動

表驅動方法 表是幾乎所有數據結構課本都要討論的非常有用的數據結構。表驅動方法出於特定的目的來使用表,下面將對此進行討論。 程序員們經常談到"表驅動"方法,但是課本中卻從未提到過什麼是"表驅動"方法。表驅動方法是一種使你可以在表中查找信息,

原创 std::tr1::function

使用std::tr1::function對象代替慮函數 在 C++的TR1中(Technology Report)中包含一個function模板類和bind模板函數,使用它們可以實現類似函數指針的功能,但卻卻比函數指針更加靈活,特別是

原创 C/C++預處理指令

預處理指令 (Preprocessor Directives) 預處理指令是我們寫在程序代碼中的給預處理器(preprocessor)的命令,而不是程序本身的語句。預處理器在我們編譯一個C++程序時由編譯器自動執行,它負責控制對程序代碼