原创 vim最常用的命令集合
最常用命令集合: 普通模式: i 從光標所在位置開始進入插入模式 I 光標回到所在行首,進入插入模式(i 的大寫) a 從光標所在位置的下一
原创 排序算法(七) 2路歸併排序
一、什麼是歸併排序? 歸併排序的特點體現在 “歸併” 上,“歸併” 就是“合併”!將兩個或兩個以上有序的序列合併爲一個有序的序列。而2路歸併就是將兩個有序序列合併爲一個有序序列。 二、一個2路歸併排序的圖例: 三、由上圖得
原创 一些可變長度對象(string對象、vector對象 ...)作爲結構體或類的成員,會不會動態改變結構體或類所定義的變量的大小呢?
可能是我自身的原因,經常性的杞人憂天! 在接觸到C++的一些類時,想的有點多了。事實證明,我確實想多了。但是我覺得可能會有和我一樣會多想的小夥伴,我在這分享一個我想多了的栗子! 以前,C語言寫結
原创 Shell腳本實例(一) 監控一個程序的運行情況
一、問題描述: 監控指定程序是否運行,如果程序沒有運行,那麼啓動程序。 二、解決思路: <1>、我們判斷一個程序是否運行,可以通過查看該程序的進程信息來判斷。 例: 判
原创 通過求斐波那契數理解遞歸的恐怖開銷!
一、什麼是遞歸? 遞歸的本質就是函數的自我調用,就是自己調用自己。 衆所周知,遞歸是一種解決問題強有力的技巧。在描述有些問題時有不可替代的優勢,但濫用遞歸很可能造成資源的巨大開銷! 二、遞歸函數調用涉及哪些運
原创 Shell腳本的基本語法(二) 預定義特殊字符、case語句和函數調用
一、Shell中有許多預定義的特殊字符: $n :n是一個數字(大於10則用大括號括起來,${12}),代表程序的第n個參數 $# :總共有多少個參數 $* :指所有的參數
原创 排序算法(五) 簡單選擇排序
一、什麼是選擇類排序? 顧名思義,選擇類排序的核心就是“選擇”,爲什麼選擇呢?怎麼樣選擇呢? 選擇類排序的基本思路就是: 在待排序序列中選擇一個最小(最大)的元素出來,並將之放到合適的位置上,最終將待排序序列變成
原创 兩個大數相加
我們以前計算兩個整數的和,需要定義兩個整型變量來存儲兩個操作數。 但是,若這兩個數大到任何整型類型都存放不下時,我們該怎麼來計算它們的和呢?這就是我們今天所討論的話題! 解決思路: (1)、存儲
原创 排序算法(三) 直接插入排序與折半插入排序
一、什麼是插入類排序? 插入類排序默認有一個已經排好序的序列,而後面的操作就是將未排好序的元素有序插入到已排好序的序列中。 將所有未排好序的元素插入到合適位置,即可得到一個有序序列。 二、需要了解的幾類插入類排序算法。
原创 排序算法(二) 快速排序
一、什麼是快速排序? 快速排序是對冒泡排序的改進,本質上都是通過交換兩個元素來消除逆序。 在冒泡排序中,由於掃描過程中只對相鄰的兩個元素進行比較,因此在互換兩個相鄰元素時只能消除一個逆序。 而在快
原创 排序算法(六) 堆排序
一、什麼是堆排序? 堆排序也是一種選擇類排序,但它選擇元素的方式和簡單選擇排序大不相同。 它將待排序數組看成一個完全二叉樹,並通過建立大根堆或小根堆的算法使之成爲一棵特殊的完全二叉樹。爲什麼說其特殊呢? 用大根
原创 排序算法(一) 冒泡排序
冒泡排序是最簡單的排序算法,至少我是這樣。我會的第一種排序就是冒泡排序,這個排序算法思路簡單,而且 代碼很簡潔,唯一的缺點就是效率低一些。但對於新手來說,也不失爲一種容易上手的排序算法! 一、什麼是冒泡排序:
原创 Shell腳本的基本語法(一) if判斷、for循環、while循環和until循環
這次來介紹一下Shell的基本語法: 一、註釋 Shell中的註釋標誌是井號 "#",除了腳本文件第一行的#不是註釋之外,其他地方出現#,則說明#開始,到本行的末尾都是註釋 二、指定腳本解釋器 一般每個Sh
原创 排序算法(四) 希爾排序
一、引入希爾排序 通過理解直接插入排序的算法,我們可以發現算法的時間耗費主要在查找合適位置和移動元素爲待排元素騰位置。 因此,直接插入排序算法,在待排序的元素序列基本有序且序列元素較少時,其性能最佳! 而希爾排
原创 函數指針的使用
一、爲什麼要有函數指針? 函數與數據項相似,函數也有地址。我們希望在同一個函數中通過使用相同的形參在不同的時間使用產生不同的效果。 二、怎麼獲取函數的地址? 獲取函數的地址的方法很簡單:只要使用函數名(不