1. 大學生新手如何入門Python演算法
新手如何入門Python演算法快進來學!
新手如何入門Python演算法?
學會了Python基礎知識, 想進階一下, 那就來點演算法吧!畢竟
編程語言只是工具,結構演算法才是靈魂。
新手如何入門Python演算法?
幾位印度小哥在Git Hub上建了一個各種Python演算法的門大全
。從原理到代碼,全都給你交代清楚了。為了讓新手更加直觀
的理解,有的部分還配了動圖。
https://github.com/TheAlgorithms/Python
這個項目主要包括兩部分內容:一是各種演算法的基本原理講解
,二是各種演算法的代碼實現。
演算法的代碼實現
演算法的代碼實現給的資料也比較豐富,除了演算法基礎原理部分
的Python代碼, 還有包括神經網路、機器學習、數學等等代碼
實現。
例如在神經網路部分,給出了BP神經網路、卷積神經網路、全
卷積神經網路以及感知機等。
代碼以Python文件格式保存在Git Hub上, 需要的同學可以自
行保存下載。
https://github.com/TheAlgorithms/Python
新手如何入門Python演算法?
演算法原理
在演算法原理部分主要介紹了排序演算法、搜索演算法、插值演算法、
跳躍搜索演算法、快速選擇演算法、禁忌搜索演算法、加密演算法等。
當然,除了文字解釋之外,還給出了幫助更好理解演算法的相應
資源鏈接,包括維基網路、動畫交互網站鏈接。
例如,在一些演算法部分中,其給出的動畫交互鏈接,非常完美
幫助理解演算法的運行機制。
交互動畫地址:
https//www.toptal.com/developers/sortingalgorithms/bub
ble-sort
排序演算法
冒泡排序
新手如何入門Python演算法?
冒泡排序,有時也被稱做沉降排序,是一種比較簡單的排序算
法。這種演算法的實現是通過遍歷要排序的列表,把相鄰兩個不
符合排列規則的數據項交換位置,然後重復遍歷列表,直到不
再出現需要交換的數據項。當沒有數據項需要交換時,則表明
該列表已排序。
桶排序演算法
桶排序(Bucket sort) 或所謂的箱排序, 是一個排序演算法, 工作
的原理是將數組分到有限數量的桶子里。每個桶子再個別排序
,有可能再使用別的排序演算法或是以遞歸方式繼續使用桶排序
進行排序。
雞尾酒排序
雞尾酒排序,也就是定向冒泡排序,雞尾酒攪拌排序,攪拌排
序(也可以視作選擇排序的一種變形),漣漪排序,來回排序
或快樂小時排序,都是冒泡排序的一種變形。此演算法與冒泡排
序的不同處在於排序時是以雙向在序列中進行排序。
新手如何入門Python演算法?
插入排序
插入排序(Insertion Sort) 是一種簡單直觀的排序演算法。它的
工作原理是通過構建有序序列,對於未排序數據,在已排序序
列中從後向前掃描,找到相應位置並插入。插入排序在實現上
, 通常採用in-place排序的額外空間的排序, 因而在從後向前排
描過程中,需要反復把已排序元素逐步向後挪位,為最新元素
提供插入空間。
歸並排序
歸並排序(Mergesort, 或mergesort) , 是創建在歸並操作_
的一種有效的排序演算法, 效率為O(n logn) (大O符號) 。1945
年由約翰·馮·諾伊曼首次提出。該演算法是採用分治法(Divide
and Conquer) 的一個非常典型的應用, 且各層分治遞歸可以
同時進行。
堆(Heap)
堆(Heap) 是一種基於比較的排序演算法。它可以被認為是一種
改進的選擇排序。它將其輸入劃分為已排序和未排序的區域,
新手如何入門Python演算法?
並通過提取最大元素,將其移動到已排序區域來迭代縮小未排序
區域。
基數排序
基數排序(Radix sort) 是一種非比較型整數排序演算法, 其原理
是將整數按位數切割成不同的數字,然後按每個位數分別比較
。由於整數也可以表達字元串(比如名字或日期)和特定格式
的浮點數,所以基數排序也不是只能使用於整數。
選擇排序
選擇排序(Selection sort) 是一種簡單直觀的排序演算法。它的
工作原理如下。首先在未排序序列中找到最小(大)元素,存
放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續
尋找最小(大)元素,然後放到已排序序列的末尾。以此類推
,直到所有元素均排序完畢。
Shell排序
Shell Sort是插入排序的一種推廣, 允許交換相距很遠的項。思
路是安排元素列表,以便從任何地方開始,考慮到每個第n個元
素都會給出一個排序列表。這樣的列表叫做h排序。等效地,可
以被認為是h交錯列表,每個元素都是單獨排序的。