常用10種演算法 一

2022-01-09 21:30:03 字數 2808 閱讀 8755

詳情

public

static

int search(int arr, int

val)

else

if (arr[mid] >val)

else

}return -1

;}

分治法是一種很重要的演算法。字面上的解釋是「分而治之」,就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。

分治演算法求解的經典問題:二分搜尋、大整數乘法、歸併排序、快排、漢諾塔等

分治法在每一層遞迴上都有三個步驟:

a)介紹

如下圖所示,從左到右有a、b、c三根柱子,其中a柱子上面有從小疊到大的n個圓盤,現要求將a柱子上的圓盤移到c柱子上去,期間只有乙個原則:一次只能移到乙個盤子且**子不能在小盤子上面,求移動的步驟和移動的次數

b)思路

c)**實現

/*

* * 移動盤子

* @param num 一共有多少個盤子

* @param a 開始的柱子

* @param b 輔助的柱子

* @param c 目標柱子 */

public

static

void hanoitower(int num, char a, char b, char

c)

else

}

小灰版動態規劃詳解

揹包問題主要是指乙個給定容量的揹包、若干具有一定價值和重量的物品,如何選擇物品放入揹包使物品的價值最大。其中又分01 揹包完全揹包(完全揹包指的是:每種物品都有無限件可用)

揹包問題:有乙個揹包,容量為 4 磅 , 現有如下物品

**實現

/*

* * 求解01揹包問題

* * @param v 商品的價值

* @param w 商品的重量(體積)

* @param c 商品的最大容量 */

public

static

void knapsackdim(int v, int w, int

c) }}}

優化為一維陣列

/*

* * 揹包問題優化 使用一維陣列

* * @param v 商品的價值

* @param w 商品的重量(體積)

* @param c 商品的最大容量 */

public

static

void knapsacksingle(int v, int w, int

c)

for (int i = 1; i < w.length; i++) }}

}

a)思路

如果用暴力匹配的思路,並假設現在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,則有:

1) 如果當前字元匹配成功(即 str1[i] == str2[j]),則 i++,j++,繼續匹配下乙個字元

2) 如果失配(即 str1[i]! = str2[j]),令 i = i - (j - 1),j = 0。相當於每次匹配失敗時,i 回溯,j 被置為 0

。 3) 用暴力方法解決的話就會有大量的回溯,每次只移動一位,若是不匹配,移動到下一位接著判斷,浪費了大量 的時間。

b)**實現

/*

* * 暴力匹配

* @param str1 原始字串

* @param str2 匹配字串 */

public

static

intviolencematch(string str1,string str2)

//將j匹配到最後乙個字元

if (j==str2.length())

i = i - j + 1

; }

return -1

;}

a)思路

基於next陣列開始進行匹配

假設存在下面需要付費的廣播台,以及廣播台訊號可以覆蓋的地區。 如何選擇最少的廣播台,讓所有的地區都可以接收到訊號。

a)思路分析

b)**實現

public

static

void

main(string args)

}if (maxkey != null

) }

system.

out.println(selects);

}

10種常用濾波演算法C實現 c

10種簡單的數字濾波c語言源程式演算法 假定從8位ad中讀取資料 如果是更高位的ad可定義資料型別為int 子程式為get ad 1 限副濾波 a值可根據實際情況調整 value為有效值,new value為當前取樣值 濾波程式返回有效的實際值 define a 10 char value char...

LVS的10種演算法

目前lvs主要有三種請求 方式和八種排程演算法。根據請求 方式的不同,所構架集群的網路拓撲 安裝方式 效能表現也各不相同。用lvs主要可以架構三種形式的集群,分別是lvs nat lvs tun和lvs dr,可以根據需要選擇其中一種。在選定 方式的情況下,採用哪種排程演算法將決定整個負載均衡的效能...

10種排序演算法總結

排序演算法有很多,所以在特定情景中使用哪一種演算法很重要。為了選擇合適的演算法,可以按照建議的順序考慮以下標準 1 執行時間 2 儲存空間 3 程式設計 工作 對於資料量較小的情形,1 2 差別不大,主要考慮 3 而對於資料量大的,1 為首要。主要排序法有 一 冒泡 bubble 排序 相鄰交換 二...