First they ignore you
          then they ridicule you
          then they fight you
          then you win
              -- Mahatma Gandhi
          Chinese => English     英文 => 中文             
          隨筆-221  評論-1047  文章-0  trackbacks-0
          ??????? 每個問題有很多種解法,但其中存在一種最優的算法,據我觀察和思考,‘懶人’是寫不出那種最優算法的,為什么呢?因為最優算法有一個很明顯的特點就是算法本身集結了人類的聰明才智,讓我來用一個實例來證明這個觀點:

          問題:
          請計算當參數為 n(n很大) 時, 1-2+3-4+5-6+7+......+n 的值

          ‘懶人’解法:
          public class Lazy {
          ? public static void main(String[] args) {
          ??? int n = 10000;
          ??? int result = 0;
          ??? for (int i = 0, flag = 1; i < n; i++) {
          ????? result += flag * (i + 1);
          ????? flag =?-flag;
          ??? }
          ??? System.out.println(result);
          ? }
          }

          ‘勤人’解法:
          public class Diligent {
          ? public static void main(String[] args) {
          ??? int n = 10000;
          ??? int result = 0;
          ??? if (0 == n % 2) {
          ????? result = -n / 2;
          ??? } else {
          ????? result = -n / 2 + n;? //由于-n / 2會舍棄小數部分,所以無需寫成-(n - 1) / 2
          ??? }
          ??? System.out.println(result);
          ? }
          }

          人類的智慧為計算機擔負了不少的計算量,“懶人”算法的時間復雜度為O(n),而“勤人”算法的時間復雜度僅為O(1),這題的最優算法出世了!
          忠告各位喜愛編程的朋友,在解決問題之前,請可憐可憐您使用的那臺精疲力盡的計算機吧,花些時間思考一下,您付出的一分一秒都會有回報的 :-)
          posted on 2006-10-14 18:05 山風小子 閱讀(1565) 評論(10)  編輯  收藏 所屬分類: Algorithm
          主站蜘蛛池模板: 富锦市| 渝中区| 无棣县| 兰州市| 隆德县| 蓬溪县| 英吉沙县| 崇信县| 乐山市| 海口市| 安吉县| 许昌县| 赫章县| 新宾| 湟中县| 梓潼县| 博白县| 深圳市| 洪江市| 三穗县| 县级市| 漠河县| 阳原县| 彰化县| 乃东县| 临朐县| 岫岩| 上林县| 兴和县| 泸定县| 承德市| 淮北市| 平罗县| 友谊县| 贺州市| 江口县| 江孜县| 新源县| 睢宁县| 岢岚县| 北宁市|