假如你正在为一投资公司咨询。他们正在做模拟,对一给定的股票连续观察n天,记为i=1,2,…,n;对每天i,该股票每股的价格p(i)。假设在这个时间区间内,在某一天他们想买1000(第i天)股而在另一天(第j天)卖出所有这些股。为得到最多收益,他们应什么时候买什么时候卖?N=8(days) 对应的为P(i) ={5, 15, 25, 16,7, 17, 23, 49} ($)。请设计算法找到正确的i与j.
二、对于海量数据,怎样存储,怎样排序,怎样搜索。
一代码:
 
import java.util.ArrayList;
 import java.util.List;
public class MyTest {
     /**
      * @param args
      */
     public static void main(String[] args) {
         int[] prices = {5, 15, 25, 16,7, 17, 23, 49 };
         List<Deal> dls = chooseDealTime(prices);
         for (Deal dl : dls) {
             System.out.println("buys at " + dl.getI() + ",sells at " + dl.getJ());
         }
     }
private static List<Deal> chooseDealTime(int[] prices) {
         // int[] prices = {5, 15, 25, 16,7, 17, 23, 49};
         int num = prices.length - 1;
         int by = 0, sl = 0;
         List<Deal> deals = new ArrayList<Deal>();
         Deal deal = null;
         for (int i = 0; i < num; i++) {
if (by == 0 && prices[i] < prices[i + 1]) {
                 by = i + 1;
                 continue;
             }
             if (by > 0) {
if (prices[i] > prices[i + 1]) {
                     sl = i + 1;
                 } 
                 else if (i == num - 1) {
                     sl = i + 2;
                 }else{
                     continue;
                 }
                 deal = new Deal();
                 deal.setI(by);
                 deal.setJ(sl);
                 deals.add(deal);
                 by = 0;
                 sl = 0;
                 deal = null;
             }
         }
         return deals;
     }
}
class Deal {
int i, j;
int getI() {
         return i;
     }
void setI(int i) {
         this.i = i;
     }
int getJ() {
         return j;
     }
void setJ(int j) {
         this.j = j;
     }
}






 
                
                
                
                




