原创 進制轉換

1、問題描述  將16進制數,以字符串形式出現的,把其轉換爲16進制,在轉換成二進制,在取反,在轉換成16進制,在轉換成字符串的結果2、代碼實現#include<stdio.h> void main(void){     char str

原创 動態規劃-最長公共子序列

(1)、問題描述:給出2個序列,x是從1到m,y是從1到n,找出x和y的最長公共子序列?x:A B C B D A By:B D C A B A則:最長公共子序列長度爲4,BDAB BCAB BCBA均爲LCS(最長公共子序列);模型實現圖

原创 最大子數組和

1、問題描述  在數組中,有正數,負數,0,求其最大子數組和?  算法思想:窮舉的解法,找出所有的子數組和,利用3層for循環;  去冗餘--->貪心算法,將小於0的子數組直接淘汰,因爲之前已經保存過最大子數組值了;2、暴力破解#inclu

原创 括號匹配算法

1、基於棧的應用  括號匹配算法是棧的一個典型應用;所以的借用棧來實現,保存相應的信息;  算法思想:遇到第一個字符, 判斷棧空,字符入棧,其後的字符和棧頂元素進行比較,括號匹配的話,則棧頂元素出棧,否則,當前元素入棧,直到遇到0結束標誌;

原创 隨機化快排和決策樹

1、隨機化快速排序算法  (1)、快速排序的壞處:完全順序/完全逆序時時間複雜度爲:O(n^2),其餘的情況時間複雜度爲:O(nlogn),算法的效率與輸入順序有關;  (2)、隨機選擇主元,好處:其運行時間不依賴於輸入序列的順序,算法的效

原创 反轉字符串中的單詞

1、問題描述:例:I am student    ------>結果爲:student am I算法思想:  先將整個字符串反轉一遍,然後在從頭開始,遇到空格的在次進行反轉,就可以實現反轉字符串中的單詞了;2、代碼實現#include<st

原创 全域哈希和完全哈希

1、直接映射表  查找數據時,直接定位,時間複雜度爲:O(1);  侷限性:浪費大量的內存空間;2、哈希表  (1)、用一個哈希函數Hash()來隨機映射那些鍵;抽象模型  (2)、哈希衝突時:  i、鏈地址法,時間複雜度最壞:O(n); 

原创 跳躍表

1、跳躍表  結構模型(雙向鏈表)    L1:某些數據的鏈表;(相當於快車)  L2:底層所有數據的鏈表;(相當於慢車)  L1和L2中鍵值相同的元素用鏈表連接起來2、理想跳躍表  跳躍表的這種數據結構就是二分查找(用鏈表模擬數組),差不

原创 選擇冒泡排序

1、選擇排序  (1)、算法思想:依次是下標爲(0,1,2,....n)的數字和其後的所有數字進行比較,每一輪的比較結果:都先確定最前面的是最小的數字;  (2)、代碼實現#include<stdio.h> void sort(int *

原创 字符串去重

1、問題描述  給出一串字符串,去掉重複的即可;  例:str = "abacdefabcde";  去重後:str = "abcdef";  算法思想:就是遍歷一遍字符串,用一個alpha[]數組,將字符串的字符當做下標,出現一次後,將不

原创 十大內排序算法總結比較

1、最基礎排序算法    時間複雜度穩定性冒泡排序      O(n^2)穩定選擇排序      O(n^2)不穩定插入排序      O(n^2)穩定2、5箇中間改良排序算法時間複雜度穩定性歸併排序O(nlogn)穩定希爾排序平均O(nl

原创 全域哈希和完全哈希

1、直接映射表  查找數據時,直接定位,時間複雜度爲:O(1);  侷限性:浪費大量的內存空間;2、哈希表  (1)、用一個哈希函數Hash()來隨機映射那些鍵;抽象模型  (2)、哈希衝突時:  i、鏈地址法,時間複雜度最壞:O(n); 

原创 隨機化數組和約瑟夫環

1、隨機化數組問題    就是對已有的數組進行亂序排列,使之隨機的,毫無規律;(1)、代碼實現#include<stdio.h> #include<time.h> #include<stdlib.h> void showArray(int

原创 最大子數組和

1、問題描述  在數組中,有正數,負數,0,求其最大子數組和?  算法思想:窮舉的解法,找出所有的子數組和,利用3層for循環;  去冗餘--->貪心算法,將小於0的子數組直接淘汰,因爲之前已經保存過最大子數組值了;2、暴力破解#inclu

原创 反轉字符串中的單詞

1、問題描述:例:I am student    ------>結果爲:student am I算法思想:  先將整個字符串反轉一遍,然後在從頭開始,遇到空格的在次進行反轉,就可以實現反轉字符串中的單詞了;2、代碼實現#include<st