我有一個算法,我想知道它的功能。我相信你們中的一些人可以看看這個,並告訴我它做了什麼,但我已經看了半個小時,但我仍然不確定。當我嘗試玩它時,它會變得混亂。你有什麼技巧來打破這樣的算法?我如何分析這樣的東西並知道發生了什麼?僞代碼/ Java神祕算法
我的猜測是它將數字從最小到最大排序,但我不太確定。
1. mystery(a1 , a2 , . . . an : array of real numbers)
2. k = 1
3. bk = a1
4. for i = 2 to n
5. c = 0
6. for j = 1 to i − 1
7. c = aj + c
8. if (ai ≥ c)
9. k = k + 1
10. bk = ai
11. return b1 , b2 , . . . , bk
這裏有一個相當於我試圖用Java寫的,但我不知道如果我翻譯正確:
public int[] foo(int[] a) {
int k=1;
int nSize=10;
int[] b=new int[nSize];
b[k]=a[1];
for (int i=2;i<a.length;){
int c=0;
for (int j=1;j<i-1;)
c=a[j]+c;
if (a[i]>=c){
k=k+1;
b[k]=a[i];
作業?...... – 2010-10-28 05:59:20