什么是算法?
我曾經出過幾道編程的挑戰題,對于沒有接觸過編程的同學來說,這些題還真有點難度。編程是用來解決一些日常生活中依靠人腦不能輕易解決的問題,例如:九宮格、24點等等。如果你學習編程比較深入了,那就要用到算法了。在寫程序之前,我們需要構思一個合適的算法來解題,一個好的算法是很重要的。
現在給你10名學生的某次考試成績,要求你按照成績從大到小給這些學生排序。當然,你可以一個一個地比較著排序,但是萬一有1000名學生甚至更多呢?(或是一千萬個呢?那會不會很繁瑣?)解決此類排序問題一定有很多的算法(至少有很多人研究),在此說一個簡單的。我們先從這10名學生中挑選一名成績最高的,記錄下他是第一名;再從剩下這9名學生中挑選一名成績最高的,記錄下他是第二名……以此類推,直到最后只剩下1名學生,直接記錄下他是第十名。事實上,在這個樸素的算法當中,還有很多需要我們去考慮的,例如:如何存放(記錄)10名學生以及他們的名次?如何表示出做完后的結果?這樣做會不會很費時(比較次數過多?循環次數過多?)……當我們確定這個算法可行以及是目前認為最優的時,才能夠利用這個算法編程。
手機、電腦上的輸入法一定會用到算法,譬如你經常輸入的詞語會不會在你又一次輸入的時候提前跳出,以加快你的打字速度。還有我們經常要用到的導航軟件,說簡單就是找最短路徑,說難一點就涉及到圖論中的好幾個不同的算法。
算法在我們身邊無處不在,在接下來的幾期一分鐘算法中,我會給大家介紹幾個比較容易理解的算法,最經典的就是之前講到的排序啦。
如果大家覺得我對算法的介紹還有些不足或有些意見的,可以在文章底部右下角的“寫留言”當中評論。