原创 尋找最大的k個數,TopK問題的C++實現

2億個整數中求最大的100萬之和 題目:有一個文件中保存了2億個整數,每個整數都以' '分隔。求最大的100萬個整數之和。 算法: 1. 首先建立一個容量爲100萬(nTop)的int數組,從文件讀取整數填充。 2. 利用堆維護該100萬

原创 C++的重載(overload)與重寫(override)

成員函數被重載的特徵: (1)相同的範圍(在同一個類中); (2)函數名字相同; (3)參數不同; (4)virtual關鍵字可有可無。 重寫是指派生類函數重寫基類函數,是C++的多態的表現,特徵是: (1)不同的範圍(分別位於派生類與基

原创 《編程珠璣》中的一些代碼

位圖排序 使用位圖對[0..N-1]中不同的整數進行排序 /* bitmap sort -- Sort distinct integers in the range [0..N-1] */ #include <stdio.h> #d

原创 構造函數和析構函數的一些問題

1、構造函數和析構函數爲什麼沒有返回值? 構造函數和析構函數是兩個非常特殊的函數:它們沒有返回值.這與返回值爲void的函數顯然不同.後者雖然也不返回任何值,但還可以讓它做點別的事情,而構造函數和析構函數則不允許.在程序中創建和消除一個對

原创 C++數字與字符串之間的轉換

1、字符串數字之間的轉換 (1)string --> char *    string str("OK");    char * p = str.c_str(); (2)char * -->string    char *p = "OK"

原创 Dynamic time warping 動態時間規整算法(DTW)

Dynamic time warping  (DTW) is an algorithm for measuring similarity between two sequences which may vary in time or sp

原创 Windows下一個LogFile類

頭文件: #ifndef __LOGFILE__H__ #define __LOGFILE__H__ // Include fstream header #ifndef _FSTREAM_ #include <fstream> usi

原创 內部排序法小結

1.冒泡排序(Bubble Sort) 冒泡排序方法是最簡單的排序方法。這種方法的基本思想是,將待排序的元素看作是豎着排列的“氣泡”,較小的元素比較輕,從而要往上浮。在冒泡排序算法中我們要對這個“氣泡”序列處理若干遍。所謂一遍處理,就是自

原创 hashmap的C++實現

按照hashmap的基本原理用C++實現了簡單的基本功能,複雜的實現參考C++庫的源碼,C++最新的標準庫裏已經有以下四種基於hashtable的容器: unordered_set (C++11) unordered_multiset (

原创 new、operator new和placement new

C++中的new/delete與operator new/operator delete new operator/delete operator就是new和delete操作符,而operator new/operator delete是

原创 單源最短路徑算法--Dijkstra算法和Bellman-Ford算法

Dijkstra算法 算法流程: (a) 初始化:用起點v到該頂點w的直接邊(弧)初始化最短路徑,否則設爲∞; (b) 從未求得最短路徑的終點中選擇路徑長度最小的終點u:即求得v到u的最短路徑; (c) 修改最短路徑:計算u的鄰接點的最短

原创 類的operator new與operator delete的重載

爲什麼有必要寫自己的operator new和operator delete? 答案通常是:爲了效率。 缺省版本的operator new是一種通用型的內存分配器,它必須可以分配任意大小的內存塊。同樣,operator delete也要可

原创 O(N)的時間尋找最大的K個數

尋找N個數中最大的K個數,本質上就是尋找最大的K個數中最小的那個,也就是第K大的數。可以使用二分搜索的策略來尋找N個數中的第K大的數。對於一個給定的數p,可以在O(N)的時間複雜度內找出所有不小於p的數。尋找第k大的元素: #includ

原创 編程之美--數字之魅

讀《編程之美》數字之魅部分的筆記。 1、整型數V的二進制中1的個數: int Count(int v) { int num = 0; while(v) { num += v & 0x01;

原创 求多個字符串的最長公共子串

最長公共子串 最長公共子串(Longest Common Substring ,簡稱LCS)問題,是指求給定的一組字符串長度最大的共有的子串的問題。例如字符串”abcb”,”bca”,”acbc”的LCS就是”bc”。 求多串的LCS,顯