<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                工作之后我們大部分的時間實在研究如何如何學習一門語言 如何如何掌握一門技術,但是作為編程的本質 數據結構和算法 我們慢慢的忽略了 。 工作后的很多程序員真的沒有大學生一樣的時間 去靜下心來去增加自己的底蘊,這是我深有體會的事情當然我這里指的是和我有累死感覺的人。 學習是一個過程,從簡入繁 一貫如此,記錄下來只為 記錄自己的點點滴滴。 算法的本質并不是我們程序員去創造算法 而是我們 按照先人創造的算法思想 用代碼來實現算法。 下面開始介紹兩個 簡單的例子 一個是交換 一個是最大公約數算法。 **簡單的交換** ~~~ #include "stdafx.h" #include <stdio.h> /* 我們的目標是 交換abcd的值為bcda 函數 M1 M2 此處代碼相信都是再小兒科不過的代碼了,但是小兒科的代碼實際上也是有小兒科的寫法。 我們在寫代碼的時候要保證的兩點 高效 快速 最小的損耗 完成功能即可 。 */ int a = 1, b = 2, c = 3, d = 4; int arr[4] = { 1, 2, 3, 4 }; //abcd的值變成 bcda #define M1(ta,tb,tc,td) \ int tem; tem=td ; td=ta;ta=tb;tb=tc;tc=tem //abcd的值變成 bcda #define M2(ta,tb,tc,td) \ ta+=td;td=ta-td;ta-=td; \ ta+=tc;tc=ta-tc;ta-=tc; \ ta+=tb;tb=ta-tb;ta-=tb; #define RESET(ta,tb,tc,td) \ ta = 1; tb = 2; tc = 3; td = 4; int _tmain(int argc, _TCHAR* argv[]) { //首先對abcd進行值替換成bcda 一說到替換 很多新手就想到了 t=a a=b b=t~ //這里中間多一步 空間的 浪費 即 t中間變量 實際上我們可以 a=a+b; b=a-b; a=a-b; //我們可以這樣去寫這個代碼 printf("M2----abcd的值:%d,%d,%d,%d\n", a, b, c, d); M2(a, b, c, d); printf("M2----abcd的值:%d,%d,%d,%d\n", a, b, c, d); printf("\n"); RESET(a, b, c, d); //不同的情況下我們使用不同的方式 來解決 ,對于兩個變量的交換我們可以用上述的 無中間變量的方式來交換看似減少了空間占用 ,但是四個變量呢 ?四個變量的交換 貌似情況變了 //實現如M1 盡管我實現的不好 但是的確是減少了 傳統意義上的交換步驟 這種代碼其實只有在大家 剛接觸程序的時候才會寫道~~~~哈哈 //這也印證了一點 情況復雜多變 代碼實現方式也很多 我們要做到 最少的代碼 最少的計算次數 完成目的即可。 printf("M1----abcd的值:%d,%d,%d,%d\n", a, b, c, d); M1(a, b, c, d); printf("M1----abcd的值:%d,%d,%d,%d\n", a, b, c, d); return 0; } ~~~ **下面一個是 求最大公約數的算法 歐幾里得算法** ~~~ #include "stdafx.h" //求最大公約數 //算法歐幾里得算法的應用 //獲得最大公約數 //現在求ab的最大公約數 既能被a又能被b整除的數字 //如果你不了解 歐幾里得算法 那么可能會 循環來解決問題 ...那么很糟糕的 //我們程序員的算法本質 是 拿來數學算法 思想轉換成代碼 這就是我們大部分使用算法的本質 除非你是算法研究者 那么 另當別論 //看看這端程序如果你不知道 歐幾里得算法 衍生的 求最大公約數算法 你該如何去寫程序?或許是多個循環吧,~ int GreatestCommonDivision(int a, int b) { //不能為負數 if (a < 0 || b < 0) return -1; ///保證a一定大于等于b if (a < b) { a = a + b; b = a - b; a = a - b; } int r = 0; //取余數 如果余數等于0 那么 最大公約數既為 當前a while ((r = a%b) != 0) { //否則 a<-b b<-r 這里的余數r 一定是小于b的 a = b; b = r; } //等于0就退出了 return b; } int _tmain(int argc, char**argv) { int a = 15, b = 220; printf("%d和%d的最大公約數是:%d\n", a, b, GreatestCommonDivision(a, b)); return 0; } ~~~ 簡單的入門就到這里 ,皮毛技術慢慢的積累 總有一天會有收獲滴
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看