原创 尋找最大的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,顯