(推薦一本書《程式員實用演算法》(Andrew Binstock / John Rex),網上有中文電子版,不過推薦買一本正版,這是一本經典書。) 1. 概述 排序演算法是電腦技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函數供程式員使用,但瞭解排序演算法的思想和原理,對於編寫高品質的軟體,顯得非常重要。 本文介紹了常見的排序演算法,從演算法思想,複雜度和使用情境等方面做了總結。 2. 幾個概念
1. 介紹 本文介紹了比較初級的圖搜尋演算法,包括深度優先遍曆,廣度優先遍曆和雙向廣度優先遍曆。 2. 深度優先遍曆DFS 2.1 演算法思想 從圖中某個頂點v開始,訪問此節點,然後依次從v中未被訪問的鄰接點出發深度優先遍曆圖,直到圖中上所有和v有路徑相通的頂點都被訪問;若此時圖中尚有頂點未被訪問,則另選圖中一個未被訪問頂點做起點,重複以上過程,直到圖中所有頂點都被訪問為止。
9.9.1 快速排序介紹 終於我們的高手要登場了,如果將來你工作後,你的老闆要讓你寫個排序演算法,而你會的演算法中竟然沒有快速排序,我想你還是不要聲張,偷偷去把快速排序演算法找來敲進電腦,這樣至少你不至於被大伙兒取笑。 事實上,不論是C++ STL、Java SDK或者.NET
9.10 總結回顧 本章內容只是在講排序,我們需要對已經提到的各個排序演算法進行對比來總結回顧。 首先我們講了排序的定義,並提到了排序的穩定性,排序穩定對於某些特殊需求來說是至關重要的,因此在排序演算法中,我們需要關注此演算法的穩定性如何。
9.7.1 堆結構介紹 我們前面講到 簡單選擇排序,它在待排序的n個記錄中選擇一個最小的記錄需要比較n-1次。本來這也可以理解,尋找第一個資料需要比較這麼多次正常的,否則如何知道它是最小的記錄。
本科系列課程參見:《軟體學院那些課》 問題描述 約瑟夫(Joeph)問題的一種描述是:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人持有一個密碼(正整數)。一開始任選一個正整數作為報數上限值m,從第一個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下一個人開始重新從1報數,如此下去,直至所有人全部出列為止。試設計一個程式求出出列順序。 基本要求
9.8.1 歸併排序介紹 前面我們講了堆排序,因為它用到了完全二叉樹,充分利用了完全二叉樹的深度是⌊log2n⌋+1的特性,所以效率比較高。不過堆結構的設計本身是比較複雜的,老實說,能想出這樣的結構就挺不容易,有沒有更直接簡單的辦法利用完全二叉樹來排序呢。當然是有。
9.6.1 變不可能為可能 給大家出一道智力題。請問“VII”是什麼。 嗯,很好,它是羅馬數位7。現在我們要給它加上一筆,讓它變成8(VIII),應該是非常簡單,只需要在右側加一豎線即可。
9.2 排序的基本概念與分類 9.2.1 排序的定義 排序是我們生活中經常會面對的問題。同學們做操時會按照從矮到高排列;老師查看上課出勤情況時,會按學生學號順序點名;高考錄取時,會按成績總分降序依次錄取等。那排序的嚴格定義是什麼呢。 假設含有n個記錄的序列為{r1,r2,……,rn},
9.1 開場白 大家好。你們有沒有在網上買過東西啊。 嗯。居然還有人說沒有。呵呵,在座的都是大學生,應該很多同學都有過網購的經曆。哪怕真的沒有,也看到或聽到過一些。現在網上購物已經相對成熟,對使用者來說還是帶來了很大的方便。
9.5.1 直接插入排序演算法 撲克牌是我們幾乎每個人都可能從事過的遊戲。而最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9-5-1。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢。
當然標題裡這個O(1)可以換成任何複雜度。 話說寫程式的時候我們會用到各種資料結構,但十有八九不會由我們自己從頭寫起,都會直接拿來用。於是很多人就會記住,譬如HashMap或Dictionary的存取是O(1)的操作,二分尋找什麼的則是O(log(N))。不過,我們在實踐中直接把這些類拿來用的時候,最好也留個心眼,知道這些類內部到底做了些什麼,為什麼它們能夠達到O(1)之類的時間複雜度。
2.8 函數的漸近增長 我們現在來判斷一下,兩個演算法A和B哪個更好。假設兩個演算法的輸入規模都是n,演算法A要做2n + 3次操作,你可以理解為先有一個n次的迴圈,執行完成後,再有一個n次迴圈,最後有三次賦值或運算,共2n + 3次操作。演算法B要做3n + 1次操作。你覺得它們誰更快呢。
資訊系統專案管理師曆年論文題目 年份 題目一 題目二 題目三 2005上 需求管理 範圍管理 2005下 風險管理 品質管理 2006上 2006下 人力資源管理 整體管理 2007上 2007下 組織級、績效考核 評審、品質管理 大型、計劃與監控 2008上 企業級、項管體系 品質管理 團隊建設、績效考核 2008下 採購管理
9.6.3 希爾排序演算法 好了,為了能夠真正弄明白希爾排序的演算法,我們還是老辦法——類比電腦在執行演算法時的步驟還研究演算法到底是如何進行排序的。 希爾排序演算法代碼如下。 void ShellSort(SqList *L){ int i,j; int
掙值管理(PV、 AC、 EV、 ETC、 CV、 SV、 CPI、 SP) 計劃工作量的預算費用PV或BCWS=計劃工作量 * 預算定額 已完成工作量的實際費用AC或ACWP 已執行工作之預算成本EV或BCWP=已完成工作量 * 預算定額 進度偏差( SV)=EV-PV,SV>0 進度提前 SV<0 進度滯後 成本偏差( CV)=EV-AC,CV>0 成本節省 CV<0 成本超支 成本績效指標( CPI)=EV/AC,CPI>1
論文 合格論文的條件 1.以我為中心:我在項目中的作用,我在項目中做了哪些工作 2.站在進階工程師的高度:從全域上介紹項目,注重過程、流程,不要太關注技術細節 3.忠實於論點: 絕對服從論點,就試題的問題進行展開,不節外生枝 4.寫好摘要: 200-400字,少於 120字不及格,摘要應反映本文的全貌 5.首尾一致:言詞表達前後一致,術語統一,檢查錯字、漏字,特別是關鍵詞語,發生意 義變化 論文解答步驟 1.時間分配:選題 3分鐘, 12分鐘設計論文, 1
案例分析 試題對考生的要求 1、需要具有一定的資訊系統專案管理實踐經驗,有較好的分析問題和解決問題的能力 2、對於有關專案管理方面,有廣博而堅實的知識或見解 3、對應用的背景、事實和因果關係等有較強的理解能力和歸納能力 4、對於一些可以簡單定量分析的問題已有類似經驗並能進行估算,對於只能定性分析的問題能用簡練的語言抓住要點加以表達 5、善於從一段書面敘述中提取出最必要的資訊,有時還需要捨棄一些無用的敘述或似是而非的內容 解答試題的途徑
9.3.2 冒泡排序演算法 我們來看看正宗的冒泡演算法,有沒有什麼改進的地方。 /* 對順序表L作冒泡排序 */void BubbleSort(SqList *L){ int i,j; for(i=1;i<L->length;i++) { for(j=L->length-1;j>=i;j--) /* 注意j是從後往前迴圈 */ {
戰略管理 企業戰略是在符合和保證實現企業使命條件下,在充分利用環境中存在的各種機會和創新機會的基礎上,確定企業同環境的關係,規定企業從事的事業範圍、成長方向和競爭對策,合理地調整企業結構和分配企業的全部資源。從其制定要求看,企業戰略是利用機會和威脅評價現在和未來的環境,用優勢和劣勢評價企業現狀,進而選擇和確定企業的總體、長遠目標制訂和抉擇實現目標的行動方案。 企業戰略是一種以變革為實質的概念。 企業戰略的特點:全域性、長遠性、抗爭性、綱領性。