原创 Linux中eval用法解析

eval命令將會首先掃描命令行進行所有的替換,然後再執行命令。該命令使用於那些一次掃描無法實現其功能的變量。該命令對變量進行兩次掃描。 兩次掃描: val=’cat test.c’//test.c內容爲一段代碼 echo $

原创 求一個無序數組的中位數

求一個無序數組的中位數,如:{2,5,4,9,3,6,8,7,1}的中位數爲5,{2,5,4,9,3,6,8,7,1,0}的中位數爲4和5。 要求:不能使用排序,時間複雜度儘可能低。 解決方案一:採用堆排序思想 1、將前(n+1

原创 webbench源碼剖析

Webbench是有名網站壓力測試工具,它是由Lionbridge公司開發 (http://www.lionbridge.com) Webbench能測試處在相同硬件上,不同服務的性能以及不同硬件上同一個服務的運行狀況。webbenc

原创 實現itoa()和atoi()

atoi():將字符串轉換爲整型值 實現代碼: enum Status { valid, unvalid }; int status = valid;//全局變量標記輸入是否非法 long long _AtoI(const char*

原创 C語言模式實現C++繼承和多態

C實現一個struct A和struct B各包含一個int成員a和b,要求達到B繼承了A的效果,也就是B裏面包含一個A。並且能達到多態的效果,也就是一個A*p指向A調的是A的函數,指向B調用的是B的函數 何爲繼承 ? 定義:在C++中

原创 shell腳本實現希爾排序

#!/bin/bash echo "please input a number list" read -a arr size=${#arr[@]} gap=$size while [ $gap -gt 1 ] do ((g

原创 由前序遍歷和中序遍歷重建二叉樹(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5)

由前序遍歷和中序遍歷重建二叉樹 前序序列(根-左-右):1 2 3 4 5 6 中序序列(左-根-右):3 2 4 1 6 5 1、由前序遍歷可知根節點爲第一個元素1,在中序遍歷序列中找到1對應位置,則1的左邊就是左子樹324,

原创 將N個字符的數組,循環右移K位。時間複雜度O(N)

將N個字符的數組,循環右移K位。時間複雜度O(N) 比如:str[]=”abcde123”,右移3位 1、旋轉abcde->edcba 2、旋轉123->321 3、整體旋轉abcde123->123abcde void reve

原创 int a[] = {12,13,12,13,19,18,15,12,15,16,17},要求對數組a進行排序,要求時間複雜度爲O(N)

int a[] = {12,13,12,13,19,18,15,12,15,16,17},要求對數組a進行排序,要求時間複雜度爲O(N) 根據時間複雜度要求,可以用鴿巢排序。所謂鴿巢排序, 也被稱作基數分類, 是一種時間複雜度爲(Θ(

原创 實現布隆過濾器

結合了位圖和Hash表兩者的優點,位圖的優點是節省空間,但是隻能處理整型值一類的問題,無法處理字符串一類的問題,而Hash表卻恰巧解決了位圖無法解決的問題,然而Hash太浪費空間。針對這個問題,布隆提出了一種基於二進制向量和一系列隨機函數

原创 歸併排序算法(遞歸與非遞歸)

歸併排序(MERGE-SORT)是建立在歸併操作上的一種有效的排序算法,該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合併,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序

原创 位圖的實現以及應用

所謂位圖就是用一個bit位來標記某個元素對應的value,而key即是這個元素。由於採用bit爲單位來存儲數據,因此在可以大大的節省存儲空間。 32位機器上,一個整形,比如int a;在內存中佔32bit,可以用對應的32個bit位來表

原创 判斷一棵樹是否是完全二叉樹

完全二叉樹的定義是,前n-1層都是滿的,第n層如有空缺,則是缺在右邊,即第n層的最右邊的節點,它的左邊是滿的,右邊是空的 根據層序遍歷遍歷二叉樹,直到發現一個空節點,若樹種還有未被訪問的非空節點,則該二叉樹不是完全二叉樹 templat

原创 選擇排序&&堆排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5,

原创 求二叉樹中兩個節點的最近公共祖先

要考慮以下三種種情況: 1:二叉樹每個節點有parent 2:二叉樹是搜索二叉樹。 3:就是普通二叉樹。 1:二叉樹每個節點有parent 首先給出Node1的父節點Node1->_parent,然後將Node1的所有父節點依