本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,才是掌握真正的價值所在。
1、選擇排序
選擇排序是一種簡單直觀的排序演算法。它的原理是這樣:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的後面,以此類推,直到所有元素均排序完畢。演算法實現如下:
2、快速排序
快速排序的執行速度快於選擇排序,它的工作原理是這樣:設要排序的陣列是N,首先任意選取一個資料(通常選用陣列的第一個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。可以使用python用遞迴式的方法來解決這個問題:
3、二分查詢
二分查詢的輸入是一個有序的列表,如果要查詢的元素包含在一個有序列表中,二分查詢可以返回其位置。打個比方來說明二分查詢的原理:比如我隨便想了個範圍在1~100以內的整數,由你來猜,以最少的次數來猜出這個數字,你每次猜完給出個數字,我會回覆大了或小了,第一種方法是你從1開始依次往後猜,那如果我想的數字是100,那麼你就要猜100次;第二種方法是從50開始,如果我說小了,那你就猜75,就這樣依次排除掉一半的剩餘數字,這就是二分查詢法。可以看出二分查詢法更加快速。對於包含n個元素的有序列表,用簡單查詢最多需要n步,而二分查詢法則最多隻需lon2 n步。下面用python來實現該演算法:
4、廣度優先搜尋
廣度優先搜尋是一種圖演算法,圖由節點和邊組成,一個節點可能與多個節點連線,這些節點稱為鄰居。廣度優先搜尋演算法可以解決兩類問題:第一類是從節點A出發,有沒有前往節點B的路徑;第二類問題是從節點A出發,前往B節點的哪條路徑最短。
5、貪婪演算法
貪婪演算法,又名貪心演算法,對於沒有快速演算法的問題(NP完全問題),就只能選擇近似演算法,貪婪演算法尋找區域性最優解,並企圖以這種方式獲得全域性最優解,它易於實現、執行速度快,是一種不錯的近似演算法。假如你是個小偷,商店裡有很多箱子,箱子裡有各種水果,有些箱子裡有3種水果,有些箱子有2種...,你想嚐到所有種類的水果,但你一個人力氣有限,因此你必須儘量搬走最少的箱子,那麼,演算法實現如下: