1. 簡述各種排序演算法的優缺點
一、冒泡排序
已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。首先比較a[1]與 a[2]的值,若a[1]大於a[2]則交換 兩者的值,否則不變。再比較a[2]與a[3]的值,若a[2]大於a[3]則交換兩者的值,否則不變。再比 較a[3]與a[4],以此 類推,最後比較a[n-1]與a[n]的值。這樣處理一輪後,a[n]的值一定是這組數據中最大的。再對a[1]~a[n- 1]以相同方法 處理一輪,則a[n-1]的值一定是a[1]~a[n-1]中最大的。再對a[1]~a[n-2]以相同方法處理一輪,以此類推。共處理 n-1 輪 後a[1]、a[2]、……a[n]就以升序排列了。
優點:穩定;
缺點:慢,每次只能移動相鄰兩個數據。
二、選擇排序
每一趟從待排序的數據元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的數 據元素排完。
選擇排序是不穩定的排序方法。
n 個記錄的文件的直接選擇排序可經過n-1 趟直接選擇排序得到有序結果:
①初始狀態:無序區為R[1..n],有序區為空。
②第1 趟排序 在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1 個記錄R[1]交換,使R[1..1]和R[2..n]分別變 為記錄個數增加1 個的新有序區和記錄個數減少1 個的新無序區。
③第i 趟排序
第i 趟排序開始時,當前有序區和無序區分別為R[1..i-1]和R(1≤i≤n-1)。該趟 排序從當前無序區中選出關鍵字最 小的記錄 R[k],將它與無序區的第1 個記錄R 交換,使R[1..i]和R 分別變為記錄個數增加1 個的新有序區和記錄個數減少 1 個的新無序區。
這樣,n 個記錄的文件的直接選擇排序可經過n-1 趟直接選擇排序得到有序結果。
優點:移動數據的次數已知(n-1 次);
缺點:比較次數多。
三、插入排序
已知一組升序排列數據a[1]、a[2]、……a[n],一組無序數據b[1]、 b[2]、……b[m],需將二者合並成一個升序數列。 首先比較b[1]與a[1]的值,若b[1]大於a[1],則跳過,比較b[1]與a[2]的值, 若b[1]仍然大於a[2],則繼續跳過,直 到b[1]小於a 數組中某一數據a[x],則將a[x]~a[n]分別向後移動一位,將b[1]插入到原來 a[x]的位置這就完成了b[1] 的插入。b[2]~b[m]用相同方法插入。(若無數組a,可將b[1]當作n=1 的數組a)
優點:穩定,快;
缺點:比較次數不一定,比較次數越少,插入點後的數據移動越多,特別是當數據總量龐大的時候,但用鏈表可以解決 這個問題。
四、縮小增量排序
由希爾在1959 年提出,又稱希爾排序(shell 排序)。
已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。發現當n 不大時,插入 排序的效果很好。首先取一增 量d(d<n),將a[1]、a[1+d]、a[1+2d]……列為第一組,a[2]、a[2+d]、 a[2+2d]……列為第二組……,a[d]、a[2d]、a[3d]……="" 列為最後一組以次類推,在各組內用插入排序,然後取d'<d,重復上述操="" 作,直到d="1。"
優點:快,數據移動少;=""
缺點:不穩定,d="" 的取值是多少,應取多少個不同的值,都無法確切知道,只能憑經驗來取。=""
五、快速排序=""
快速排序是冒泡排序的改進版,是目前已知的最快的排序方法。
="" 已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。首先任取數據a[x]="" 作為基準。比較a[x]與其它數據並="" 排序,使a[x]排在數據的第k="" 位,並且使a[1]~a[k-1]中的每一個數="" 據a[x],然後采 用分治的策略分別對a[1]~a[k-1]和a[k+1]~a[n] 兩組數據進行快速排序。
優點:極快,數據移動少;
缺點:不穩定。
2. 位元組計數法位元組填充的標志位元組法比特填充的標志比特法的優缺點
字元填充法與與特定字元編碼集關系過於密切,而且實現復雜。字元計數法位元組計數欄位的傳輸正確性至關重要,否則錯誤不但影響本幀的,還影響下一幀,非法比特只用於採用冗餘編碼的特殊編碼環境,而且對比特碼型有一定要求,所以目前較為常用比特填充法。
3. 標志設計的優缺點
看是什麼主題的了,每個主題所要體現的含義不同啊 還要看你設計的理念是否符合對方的所需。很多原因
4. 演算法的三中描述方法中,自然語言,流程圖,程序代碼的優缺點
一、自然語言:
優點:易於理解;
缺點:不能讓計算機執行。
二、流程圖:
優點:自然語言的時(順)序描述,介於自然語言和程序代碼之間;
缺點:不依賴於具體計算機CPU。
三、程序代碼:
優點能讓計算機理解執行,
缺點:需懂專業技能才能編寫,不直觀、錯誤不容易排查。
自然語言主要是指人類使用的語言,匯編語言是一種低級語言,是一種直接面向硬體的語言,C也算是一種高級語言,但是相對VB等就比較低級了,所以一般說是中級語言,別的基本都是高級語言。
(4)標志整理演算法優缺點擴展閱讀:
例如,一張流程圖能夠成為解釋某個零件的製造工序,甚至組織決策制定程序的方式之一。這些過程的各個階段均用圖形塊表示,不同圖形塊之間以箭頭相連,代表它們在系統內的流動方向。下一步何去何從,要取決於上一步的結果,典型做法是用「是」或「否」的邏輯分支加以判斷。
5. 機器學習中常見的演算法的優缺點之決策樹
決策樹在機器學習中是一個十分優秀的演算法,在很多技術中都需要用到決策樹這一演算法,由此可見,決策樹是一個經典的演算法,在這篇文章中我們給大家介紹決策樹演算法的優缺點,希望這篇文章能夠更好的幫助大家理解決策樹演算法。
其實決策樹倍受大家歡迎的原因就是其中的一個優勢,那就是易於解釋。同時決策樹可以毫無壓力地處理特徵間的交互關系並且是非參數化的,因此你不必擔心異常值或者數據是否線性可分。但是決策樹的有一個缺點就是不支持在線學習,於是在新樣本到來後,決策樹需要全部重建。另一個缺點就是容易出現過擬合,但這也就是諸如隨機森林RF之類的集成方法的切入點。另外,隨機森林經常是很多分類問題的贏家,決策樹訓練快速並且可調,同時大家無須擔心要像支持向量機那樣調一大堆參數,所以在以前都一直很受歡迎。
那麼決策樹自身的優點都有什麼呢,總結下來就是有六點,第一就是決策樹易於理解和解釋,可以可視化分析,容易提取出規則。第二就是可以同時處理標稱型和數值型數據。第三就是比較適合處理有缺失屬性的樣本。第四就是能夠處理不相關的特徵。第五就是測試數據集時,運行速度比較快。第六就是在相對短的時間內能夠對大型數據源做出可行且效果良好的結果。
那麼決策樹的缺點是什麼呢?總結下來有三點,第一就是決策樹容易發生過擬合,但是隨機森林可以很大程度上減少過擬合。第二就是決策樹容易忽略數據集中屬性的相互關聯。第三就是對於那些各類別樣本數量不一致的數據,在決策樹中,進行屬性劃分時,不同的判定準則會帶來不同的屬性選擇傾向;信息增益准則對可取數目較多的屬性有所偏好,而增益率准則CART則對可取數目較少的屬性有所偏好,但CART進行屬性劃分時候不再簡單地直接利用增益率盡心劃分,而是採用一種啟發式規則。
通過上述的內容相信大家已經知道了決策樹的優點和缺點了吧,大家在學習或者使用決策樹演算法的時候可以更好的幫助大家理解決策樹的具體情況,只有了解了這些演算法,我們才能夠更好的使用決策樹演算法。
6. 比較演算法優缺點:
1.先來先服務先來先服務(FCFS, First Come First Serve)是最簡單的調度演算法,按先後順序進行調度。1. 定義按照作業提交或進程變為就緒狀態的先後次序,分派CPU;當前作業或進程佔用CPU,直到執行完或阻塞,才出讓CPU(非搶占方式)。在作業或進程喚醒後(如I/O完成),並不立即恢復執行,通常等到當前作業或進程出讓CPU。2.適用場景比較有利於長作業,而不利於短作業。有利於CPU繁忙的作業,而不利於I/O繁忙的作業。
2. 輪轉法輪轉法(Round Robin)是讓每個進程在就緒隊列中的等待時間與享受服務的時間成正比例。1. 定義將系統中所有的就緒進程按照FCFS原則,排成一個隊列。每次調度時將CPU分派給隊首進程,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結束時,發生時鍾中斷。調度程序據此暫停當前進程的執行,將其送到就緒隊列的末尾,並通過上下文切換執行當前的隊首進程。進程可以未使用完一個時間片,就出讓CPU(如阻塞)。2. 時間片長度的確定時間片長度變化的影響過長->退化為FCFS演算法,進程在一個時間片內都執行完,響應時間長。過短->用戶的一次請求需要多個時間片才能處理完,上下文切換次數增加,響應時間長。對響應時間的要求:T(響應時間)=N(進程數目)*q(時間片)就緒進程的數目:數目越多,時間片越小系統的處理能力:應當使用戶輸入通常在一個時間片內能處理完,否則使響應時間,平均周轉時間和平均帶權周轉時間延長。
3. 多級反饋隊列演算法多級反饋隊列演算法(Round Robin with Multiple Feedback)是輪轉演算法和優先順序演算法的綜合和發展。1. 定義設置多個就緒隊列,分別賦予不同的優先順序,如逐級降低,隊列1的優先順序最高。每個隊列執行時間片的長度也不同,規定優先順序越低則時間片越長,如逐級加倍。新進程進入內存後,先投入隊列1的末尾,按FCFS演算法調度;若按隊列1一個時間片未能執行完,則降低投入到隊列2的末尾,同樣按FCFS演算法調度;如此下去,降低到最後的隊列,則按「時間片輪轉」演算法調度直到完成。僅當較高優先順序的隊列為空,才調度較低優先順序的隊列中的進程執行。如果進程執行時有新進程進入較高優先順序的隊列,則搶先執行新進程,並把被搶先的進程投入原隊列的末尾。2.優點為提高系統吞吐量和縮短平均周轉時間而照顧短進程。為獲得較好的I/O設備利用率和縮短響應時間而照顧I/O型進程。不必估計進程的執行時間,動態調節3. 幾點說明I/O型進程:讓其進入最高優先順序隊列,以及時響應I/O交互。通常執行一個小時間片,要求可處理完一次I/O請求的數據,然後轉入到阻塞隊列。計算型進程:每次都執行完時間片,進入更低級隊列。最終採用最大時間片來執行,減少調度次數。I/O次數不多,而主要是CPU處理的進程。在I/O完成後,放回優先I/O請求時離開的隊列,以免每次都回到最高優先順序隊列後再逐次下降。為適應一個進程在不同時間段的運行特點,I/O完成時,提高優先順序;時間片用完時,降低優先順序。
4. 優先順序法優先順序演算法(Priority Scheling)是多級隊列演算法的改進,平衡各進程對響應時間的要求。適用於作業調度和進程調度,可分成搶先式和非搶先式。1. 靜態優先順序作業調度中的靜態優先順序大多按以下原則確定:由用戶自己根據作業的緊急程度輸入一個適當的優先順序。由系統或操作員根據作業類型指定優先順序。系統根據作業要求資源情況確定優先順序。進程的靜態優先順序的確定原則:按進程的類型給予不同的優先順序。將作業的情態優先順序作為它所屬進程的優先順序。2. 動態優先順序進程的動態優先順序一般根據以下原則確定:根據進程佔用有CPU時間的長短來決定。根據就緒進程等待CPU的時間長短來決定。
5.短作業優先法短作業優先(SJF, Shortest Job First)又稱為「短進程優先」SPN(Shortest Process Next);這是對FCFS演算法的改進,其目標是減少平均周轉時間。1. 定義對預計執行時間短的作業(進程)優先分派處理機。通常後來的短作業不搶先正在執行的作業。2. SJF的特點(1) 優點:比FCFS改善平均周轉時間和平均帶權周轉時間,縮短作業的等待時間;提高系統的吞吐量;(2) 缺點:對長作業非常不利,可能長時間得不到執行;未能依據作業的緊迫程度來劃分執行的優先順序;難以准確估計作業(進程)的執行時間,從而影響調度性能。3. SJF的變型「最短剩餘時間優先」SRT(Shortest Remaining Time)(允許比當前進程剩餘時間更短的進程來搶占)「最高響應比優先」HRRN(Highest Response Ratio Next)(響應比R = (等待時間 + 要求執行時間) / 要求執行時間,是FCFS和SJF的折衷)6. 最高響應比優先法最高響應比優先法(HRN,Highest Response_ratio Next)是對FCFS方式和SJF方式的一種綜合平衡。FCFS方式只考慮每個作業的等待時間而未考慮執行時間的長短,而SJF方式只考慮執行時間而未考慮等待時間的長短。因此,這兩種調度演算法在某些極端情況下會帶來某些不便。HRN調度策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出響應比最高的作業投入執行。響應比R定義如下: R =(W+T)/T = 1+W/T其中T為該作業估計需要的執行時間,W為作業在後備狀態隊列中的等待時間。每當要進行作業調度時,系統計算每個作業的響應比,選擇其中R最大者投入執行。這樣,即使是長作業,隨著它等待時間的增加,W / T也就隨著增加,也就有機會獲得調度執行。這種演算法是介於FCFS和SJF之間的一種折中演算法。由於長作業也有機會投入運行,在同一時間內處理的作業數顯然要少於SJF法,從而採用HRN方式時其吞吐量將小於採用SJF 法時的吞吐量。另外,由於每次調度前要計算響應比,系統開銷也要相應增加。
7. 比較商品分類常用標志的優缺點
常用商品分類標志的優缺點和適用范圍:1、以商品的用途作為分類標志,適用於對商品大類的劃分,也適合於對商品類別、品種的劃分。優點便於分析和比較同一用途商品的質量和性能,便於經營者和消費者按需要對口經營和選購。不適於多用途的商品。
2、以原材料作為商品分類標志,適用於原材料商品和原料對成品質量影響較大的商品。優點,分類清楚,能從本質上反映出每類商品的性能和質量特點、品種特徵及其使用保管要求的差異。
3、以加工工藝作為分類標志,適用於可以選用多種加工工藝生產且性能和品種特徵受加工工藝影響較大的產品,優點能夠直接反映商品品種特徵及風格。
4、以商品的化學成分作為分類標志:適用於化學成分已知且對商品特徵影響較大的商品,優點,對深入研究商品的性能和質量、儲運條件以及使用方法有重要意義。
5、以商品的產地作為分類標志:適用於品質受產地影響較大的農產品及其加工製品、中葯材、玉器、寶石與珍珠及其製品。
8. 演算法三種描述方法的優缺點
本來演算法和語言沒有太大關系,用什麼來描述都可以。優點:Java語言對於一些小的演算法描述起來更方便,因為Java語言的抽象程度比較高。並且不用考略內存分配的問題。缺點:但是對於大型演算法要考略到執行效率的時候,Java就不太適合,Java的運行速度相對於C/C++要慢一些,並且Java是在JVM虛擬機上運行的,雖然優點是跨平台,但是很多演算法是要求和底層打交道,用Java反而顯得不太方便。
9. 能夠特徵提取的演算法有哪些以及各自的優缺點
1、演算法概念:\x0d在數學上,現代意義上的「演算法」通常是指可以用計算機來解決的某一類問題是程序或步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內完成.\x0d2.演算法的特點:\x0d(1)有限性:一個演算法的步驟序列是有限的,必須在有限操作。