從零單排的算法基礎(chǔ)

首先,咱們得先知道,什么是算法?

在生活中,當(dāng)我們做菜,玩游戲,都有一些“套路”,無(wú)論是所謂的游戲秘籍,還是大師菜譜,在計(jì)算機(jī)的世界中,稱之為算法。其目的就是為了解決一個(gè)問(wèn)題,從而開(kāi)展的不同的步驟,但究竟是不是這么簡(jiǎn)單呢,咱們就從算法的特性說(shuō)起。

咱們可以從書(shū)中得知,算法有五個(gè)特性:

聽(tīng)上去很是玄乎,但是仔細(xì)分析還是可以有些不同的收獲。

  1. 確定性
    一種算法除了能得出正確的結(jié)論之外,還得有明確操作步驟。如同把大象放進(jìn)冰箱,第一步是打開(kāi)冰箱,第二布是把大象放進(jìn)去,第三步就是關(guān)上門(mén)。
  2. 可行性
    上面我提到把大象放進(jìn)冰箱的幾個(gè)步驟,第二個(gè)步驟顯然是不可行的,所以自然也無(wú)法得出正確的結(jié)構(gòu)。那么可行性就很重要了。
  3. 有窮性
    我再舉一個(gè)例子,如果咱們要統(tǒng)計(jì)中國(guó)的人口,你不好好查人口數(shù)據(jù),非要一個(gè)個(gè)的數(shù)。這樣子雖然聽(tīng)上去總有一天數(shù)完,但是顯然是不可能的,所以算法還需要有窮的步驟和有窮的執(zhí)行時(shí)間。
  4. 輸入和輸出
    這兩個(gè)我就和起來(lái)說(shuō),簡(jiǎn)而言之就是,輸入就是問(wèn)題,輸出就是答案。而且只要問(wèn)題不變,同一個(gè)算法得出的答案自然也是相同。

現(xiàn)在我們知道了什么是算法,那么——什么樣的算法是一個(gè)好的算法呢?

正確是最最最最最最重要的

算法本身就是為了得出正確的結(jié)果而總結(jié)的“套路”,(除非是你用錯(cuò)了算法)如果沒(méi)能得出正確的結(jié)論,那這個(gè)算法還有什么存在的意義呢?

不是我自己的錯(cuò),我也要承擔(dān)的綠帽精神(健壯)

咱們都知道,是人那就會(huì)犯錯(cuò),比如咱們做了個(gè)計(jì)算器,讓用戶輸入數(shù)字和符號(hào)進(jìn)行計(jì)算,然而卻給咱輸入了一堆字母,自然得不出正確的結(jié)果,咱又不能去揍他,畢竟用戶是上帝嘛,當(dāng)然是選擇原諒他。那么面對(duì)錯(cuò)誤的輸入時(shí)不會(huì)出錯(cuò)甚至能給出正確的解答,這也是好算法的一方面。

只有上帝知道我上個(gè)月前寫(xiě)的是什么玩意(可讀)

如果是在工作中,可不是只有自己會(huì)看自己所寫(xiě)的代碼,咱們不僅得看別人寫(xiě)的代碼,還得有別人看自己代碼的準(zhǔn)備。在你痛罵別人不寫(xiě)注釋的同時(shí),不妨也給自己的代碼寫(xiě)上,因?yàn)楹苡锌赡苓^(guò)段時(shí)間,你自己也看不懂了。除此之外,更加重要的是寫(xiě)代碼的時(shí)候遵守規(guī)范,語(yǔ)法正確,代碼結(jié)構(gòu)清晰有條理,命名合理。。。。

天下武功,唯快不破!

咱們的計(jì)算機(jī)性能是有限的,在提高硬件水平的同時(shí),咱們所寫(xiě)的程序也要盡量的高效。解決同一個(gè)問(wèn)題,不同的算法做耗費(fèi)的時(shí)間和資源有這天壤之別。有個(gè)笑話是這么說(shuō)的,有個(gè)人為了給銀行找麻煩,特意兌換了好幾萬(wàn)的硬幣去銀行,要存錢(qián)。本來(lái)準(zhǔn)備好好看柜員們數(shù)錢(qián)數(shù)到天昏地暗,結(jié)果一稱重量,一除就得出了總數(shù)。這,就是算法的力量。

那么說(shuō)了這么多,我還是不知道該怎么判斷什么樣的算法是好算法

在正確的前提下,咱們希望算法能夠占用的資源少,運(yùn)行的時(shí)間快。也就是讓馬兒少吃草,快快跑,你說(shuō)這可能嗎?還真就有可能。

咱們要建立標(biāo)準(zhǔn),量化效率,構(gòu)建理想模型。比如圖靈機(jī)模型,RAM模型等

用復(fù)雜度(大O記號(hào))來(lái)表示效率,之后咱們就根據(jù)這個(gè)來(lái)評(píng)判算法的好壞(快慢)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容