什么是算法?
當(dāng)人們提到“算法”一詞,往往就會把它們當(dāng)成專屬于“人工智能”的范疇,很多專業(yè)的計算機(jī)人士也是,提起算法就頭疼,不知道如何學(xué)習(xí)算法,慢慢的對算法就會失去興趣,算法不僅僅是計算機(jī)行業(yè)特有的,在我們的生活中也處處存在著算法,算法是專注于解決問題的過程和方法。
既然提到了算法是解決問題的方法,哪方法也是有好有壞的,算法是在特定問題下解決問題的方法,證明一個算法的好壞,就要看它的時間復(fù)雜度和空間復(fù)雜度。
通過一個實例來說明算法的好壞,假如李四是班長,老師叫李四統(tǒng)計下本班的人數(shù)是多少?
李四非常自信的一個、兩個、三個的數(shù)了起來,然后報告老師,本班總共8人,老師說人數(shù)少,可以這樣數(shù),然后人數(shù)過大,是不是就非常浪費(fèi)時間了,那你的時間復(fù)雜度是不是就大了,想想還有沒更好的辦法!。

基于這個想法,可不可以以兩個一組,進(jìn)行來分,最后看下綜合是多少組乘于它組的總?cè)藬?shù),是不是就是它的總?cè)藬?shù),那可不可以以十人一組或者二十人一組呢,這樣是不可取的,因為多人一組還是要數(shù)的,最后時間復(fù)雜度還是要增大的。

結(jié)合以上兩個算法可以得出,組的概念還是有用,哪能不能更高效大的方法呢?如果在人數(shù)較多的情況下,可不可以按照房間的概念來區(qū)分的,假設(shè)每個房間可以容納20人,看最后一個容納多少人,前面每個房間數(shù)乘于容納的人數(shù)再加上最后一個房間容納的人數(shù)之和,就可以得到最終的人數(shù)。

以房間號計算的方式,雖然可以快速計算出結(jié)果,但是它所消耗的空間復(fù)雜度是大的,反而有點得不償失的,如果不考慮消耗的內(nèi)存大小,可以考慮使用這種方式。
思考這樣一個問題,如果可以投入一點的成本,是不是可以降低它的時間復(fù)雜度和空間復(fù)雜度呢?!
其實,如果可以購買一些記事本,每次來校的學(xué)生都要進(jìn)行登記,我們只需要計算記事本的人數(shù)和有多少個記事本,是不是可以更快,而且高效的計算出學(xué)生的總?cè)藬?shù)呢?

以上幾種算法都可以達(dá)到想要的結(jié)果,但是考慮到實際應(yīng)用的場景以及后期更好的性能輸出,還是要考慮它的時間復(fù)雜度和空間復(fù)雜度作為一個好算法的衡量標(biāo)準(zhǔn),其次就是他的可讀性。
