演算法主要注意以下兩點:
- 執行時間
- 記憶體消耗
下面是第乙個小演算法
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...