原创 C++模板實現堆

堆是一種特殊類型的二叉樹,具有以下兩個性質: 1. 每個節點的值大於/小於(最大堆/最小堆)等於其每個子節點的值 2. 該數完全平衡,最後一層的葉子都處於最左側的位置 本文以最大堆爲例子,實現堆的插入與刪除操作.其中,堆的插入

原创 C++模板實現堆排序

堆的概念我在之前的文章中已經有說明,這裏不再贅述.本小結的內容僅包括堆排序部分. 算法特點: 1.不穩定. 2.時間複雜度 O(nlog(n)) 3.空間複雜度 O(nlog(n)) 在堆刪除節點的同時,正好可以巧妙的將該數

原创 .net(C#)發送EMail

當工作審批流程(人事申請,審批,IT申請審批,出差申請審批)到達某種狀態時,往往需要發送郵件通知給審批人或者申請人以提醒。本文利用C#完成了郵件自動發送的功能。 1.實體參數的定義,這裏主要用到了申請人,審批人,以及審批狀態等參數

原创 JQuery Ajax 結合.net MVC框架實現頁面局部刷新

JQuery Ajax的異步刷新可實現html靜態頁面率先加載完畢,呈現給用戶,對提升用戶體驗很有幫助.本文舉一個小例子,在.net的MVC框架下面實現JQuery Ajax的異步刷新. 我們模擬一個場景,在頁面加載完畢後,通過A

原创 .net MVC框架下利用css+js實現遮罩效果

前一篇文章中http://blog.csdn.net/luanzheng_365/article/details/70455933,實現的loading效果的顯示上進行優化,形成一個遮罩,將loading顯示在遮罩上,並調整遮罩屬

原创 .net MVC框架下利用CSS+js實現loading效果

繼續上一節的話題,http://blog.csdn.net/luanzheng_365/article/details/70348382 動態刷新過程往往需要較多的時間,這期間需要做一個loading的效果,來增強用戶體驗。 先看

原创 C++模板實現快速排序

快速排序是一種效率很高的排序算法,其基本思想是首先選取第一個位置做爲哨兵,從最後位置開始依次向前搜索,搜索到第一個小於哨兵的元素,則進行位置交換,之後在從開始位置開始進行搜索,搜索到第一個大於哨兵的元素,則進行位置交換,如此往復,

原创 C++模板實現二叉樹(七 AVL樹的刪除)

AVL樹的刪除比插入更加耗時與複雜,主要表現在使用複製刪除刪除掉某個節點後,經過旋轉,重新平衡之後,子樹的高度可能發生變化,因此需要繼續向上追溯,對父節點重新評估是否需要做重新平衡。是否需要平衡的原則是看balance value

原创 C++模板實現直接插入排序

排序是數據結構中的重要章節.涉及到多種排序算法.本小節講述直接插入排序的算法及實現. 直接插入排序的思想是,插入的元素插入到一個已經排列有序的數組中,從數組末尾開始進行比較,如果發現插入的數小於被比較的數,則兩數交換位置,直到沒有

原创 C++模板實現簡單選擇排序

簡單選擇排序的思想是每次選擇最小的數據,放在數組(鏈表)的最開頭位置,然後將開頭位置向後移動一個單位. 外層循環負責依次設置開頭位置,內層循環負責選擇從開頭位置到結尾位置的最小數據,之後與開頭位置進行交換. 算法特點: 1.不

原创 C++模板實現希爾排序

希爾排序是一種高效的排序算法,原理是將大數組分成若干個小數組,對每個小數組進行排序.之後縮短步長,對原數組重新劃分小組,繼續對每個小組進行排序.直到步長變爲1後,進行最後一次直接插入排序. 此算法高效的原因在於直接插入排序在對基

原创 C++模板實現冒泡排序

冒泡排序的思想是從數組(鏈表)末尾開始,對相鄰的兩個數據進行比較,如果小數據在後面,則交換位置.直到進行到開頭位置,則稱爲進行了一次冒泡.最小的數據被冒泡到了開頭位置.然後將開頭位置向後移動一個單位,依次進行冒泡,直到某次冒泡沒有

原创 C++模板實現二叉樹(六 AVL樹基礎與旋轉)

dsw算法可以從全局平衡樹,但是,往往在插入於刪除動作發生時,將隻影響樹的一部分,此時重新平衡可以只在樹的一部分進行.AVL樹要求每個節點左右子樹的高度差最大爲1.平衡因子用右子樹的高度減去左子樹的高度.在AVL樹中,平衡因子應該

原创 C++模板實現梳排序

梳排序是一種改進的冒泡排序算法,通過比較元素彼此之間的步長位置這種方式先對數據進行預處理,在每次移動中,步長會越來越小,直至他等於1.這一理念就是在正式排序前先將一些大元素移動至數組的底部.之後正式排序採用冒泡排序算法來進行. 大

原创 C++模板實現二叉樹(五 樹的平衡之dsw算法)

二叉樹的高效查找算法依賴於樹的平衡.如果樹高度不平衡,二叉樹將退化成類似鏈表的效率,則二叉樹的優勢就不存在了.平衡二叉樹的dsw算法提供了一種將二叉樹轉化成平衡二叉樹的方法. 算法的核心思想是利用旋轉. 1.通過右旋轉生成主鏈