01 演算法設計(一)

2021-08-10 17:46:40 字數 1065 閱讀 2048

演算法主要注意以下兩點:

- 執行時間

- 記憶體消耗

下面是第乙個小演算法

package test;

import org.junit.test;

public

class

demotest

arr[100] = 69;

//2.把資料打亂, 隨機排列一下

for(int i=0;i<111;i++)

//測試一下我們組裝的資料

// for(int i=0;i<101;i++)

/** *開始完成題目

*解決方案一

*缺點:速度太慢

*/fornum:

for(int i=0;i//取出第乙個數字,然後與後面所有數字依次比對

//arr[i] 和 arr[i+1]比較

for(int j=i+1;jif(arr[i]==arr[j])}}

/*** 解決方案二:

* 0-99有乙個重複的數字

* 將陣列中所有的數字加一起的和 (0-99的和 + 重複數字)

* 將上述結果減去0-99的和 剩下的就是重複的數字

* 缺點:如果有三萬億個數字的話, 會超出資料型別的長度。會爆掉

*///1.求arr的和

int sum=0;

for(int i=0;i<=arr.length;i++)

//2.依次減去0-99

for(int i=0;i<=99;i++)

system.out.println(sum);

/*** 方案三:

* 使用異或^

* 0^1^2...99^m^0^1^2...^99 = m

*///使用陣列中的第乙個資料,異或後面所有的資料

for(int i=1;i0] = arr[0]^arr[i];

}//再異或一遍0-99的數字

for(int i=1;i<=99;i++)

system.out.println(arr[0]);

}}

01 演算法設計(二)

題設 現在有0 99,共計100個整數,各不相同,將所有數放入乙個陣列,隨機排布,陣列長度100,將裡面任意乙個數字替換成0 99的另乙個數字 唯一重複的數字 問題 將這個重複的數字找出來 同樣的這段 也可以解決01.演算法設計 一 的問題。package test6 import org.juni...

演算法設計與分析 0 1揹包問題

問題描述 給定n個重量為,價值為的物品和乙個容量為c的揹包,0 1揹包問題是求這些物品中的乙個 最有價值的子集,並且能夠裝入揹包中。基本演算法思想 暴力法 用暴力法解決0 1揹包問題,需要考慮給定n個物品集合的所有子集,找出所有重量不超過揹包重量的子集,計算其每個子集的 總價值,比較輸出價值最大的那...

演算法設計 0 1揹包問題(動態規劃)

給定n種物品和一揹包 wi 物品i的重量 vi 物品i的重量價值 c 揹包的容量 問 應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大?p i j 代表可選擇物品為前i個,揹包容量為j時的最大價值 當j w i 時我們需要判斷v i p i 1 j w i 與p i 1 j 的大小來對p i...