原创 進制轉換
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