什麼是算法?快速學會使用python編寫算法

2020-12-14 派僧哥

01什麼是算法?

我們來看百度百科對算法的解釋:算法是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令。

我們可以理解算法就是計算機面對一個問題的解決方法

比如,我們要求計算機幫我們將輸入的100個整數從小到大進行排序,那麼排序的具體方法,就是算法。

舉個例子,比如我們現在有這麼一列數據 [ 5,7,8,3,1],現在需要程序幫我們進行從小到大進行排序。

應該怎麼辦呢?

在程序中,我們已經知道數據可以進行加減乘除運算,還可以進行邏輯比較

對於這五個數據,我們可以先讓五個數據進行比較,比較最後得到1是最小的,然後將1和首位的5進行交換,現在的結果是[ 1,7,8,3,5],接下來,讓1後面的四個數據,執行同樣的操作,比較得到3是最小的,將3與7交換位置,就得到[1,3,8,7,5]。

然後在後3位中繼續同樣操作,得到5是最小的,就與8進行交換得到 [1,3,5,7,8],最後剩下的兩個進行比較,發現7是最小的,位置不用交換,完成排序

這種方法就是選擇排序,我們剛剛具體地模擬了計算機是如何一步步將一列數據從小到大排好序的

02那麼,程序如何寫呢?

python 選擇排序

排序的過程如下

選擇排序具體過程

當然還有其他很多的排序方法,就是不同的解題方案

03

冒泡排序

比如說冒泡排序,這如它的名字一樣,將小的數浮上來,大的數沉下去,還是拿剛剛的數據舉例:[ 5,7,8,3,1]

首先,5和7進行比較,7更大,那麼不用交換位置,讓7和下一位比較,7和8,8更大還是不用交換,接下來8和3比較,8更大,8和3進行交換,得到[5,7,3,8,1]

然後8和1比較,交換位置,得到[5,7,3,1,8]

接下來,對前面 5,7,3,1 四個數據進行同樣操作,經過操作之後得到,[5,3,1,7,8]

然後,對【5,3,1】再進行一輪,得到 [3,1,5,7,8]

最後對 [3,1] 進行交換得到 [1,3,5,7,8]

python 冒泡算法

具體的排序過程如下

冒泡排序過程

現在你發現了兩種方法都可以解決同一個問題,但兩者的方法不一樣,執行效率也不一樣,這就設計到時間複雜度和空間複雜度,在這次課中我們就展開講。

這次課主要了解算法是什麼

04回顧總結

1、嘗試自己寫一個選擇算法

2、寫一個冒泡算法

當你有了一些基礎之後,想要通過書籍系統提高,可以參考這本流暢的python教程

歡迎關注我,一起輕鬆學習python編程

如果對你有幫助,可以隨手點讚和收藏,這樣可以讓更多人看到!

如果你有問題可以在留言區告訴我或私信給我

相關焦點

  • Python中的快速排序算法,快速排序的優缺點,中級python技術點
    這是快速排序最壞的情況。正如您所看到的,快速排序的效率通常取決於主選擇。如果輸入數組是未排序的,那麼使用第一個或最後一個元素作為主元素將與隨機元素一樣工作。但是,如果輸入數組是排序的或幾乎是排序的,使用第一個或最後一個元素作為主元素可能會導致最壞的情況。隨機選擇支點使得快速排序更有可能選擇一個更接近中位數的值,並且完成得更快。
  • 30.深入淺出介紹史上最偉大的加密算法:RSA算法
    使用私鑰解密。甚至,我們還可以用python程序非常快速地破解上面的示例。已知 (e,n)因為已經知道 n 只有4個因數,所以從2開始循環,找到的第一個能夠整除n的數一定就是p, 而 q = n // p 。
  • 基於PPO強化學習算法的AI成功拿...
    Viet Nguyen使用的強化學習算法正是OpenAI研發的近端策略優化算法(Proximal Policy Optimization,簡稱PPO),他介紹,此前使用A3C代碼訓練馬裡奧闖關,效果遠不及此,這次能夠達到29關也是超出了原本的預期。
  • 圖的最短路徑算法-Floyd算法-弗洛伊德算法
    Floyd算法又稱為插點法,是一種利用動態規劃的思想尋找給定的加權圖中多源點之間最短路徑的算法 在計算機科學中,Floyd-Warshall算法是一種在具有正或負邊緣權重(但沒有負周期)的加權圖中找到最短路徑的算法。算法的單個執行將找到所有頂點對之間的最短路徑的長度(加權)。
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    6、Linux基礎 (1) 文件處理命令 (2) 權限管理命令 (3) 幫助命令 (4) 文件搜索命令 (5) 壓縮解壓命令 (6) 命令使用技巧
  • golang 調用 python 實戰路徑規劃之 A* 算法
    與Dijkstra算法類似,我們也使用一個優先隊列,但此時以每個節點到達終點的距離作為優先級,每次始終選取到終點移動代價最小(離終點最近)的節點作為下一個遍歷的節點。這種算法稱之為最佳優先(Best First)算法。這樣做可以大大加快路徑的搜索速度,如下圖所示:但這種算法會不會有什麼缺點呢?答案是肯定的。
  • Python最佳經典學習路線
    如何學習Python python語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例) (1)Python3入門,數據類型,字符串 (2)判斷/循環語句,函數,
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • Alphabet旗下人工智慧自己編寫算法來指揮控制網際網路氣球
    該公司的網際網路氣球現在由一種人工智慧編寫算法並且執行自己編寫的算法。這套人工智慧基於深度強化學習的飛行控制系統,比老式的、由人類製造的系統更加高效和熟練。該系統現在正在管理肯亞上空的Loon氣球編隊,在過去十年的大部分時間裡,Loon在一系列救災行動和其他測試環境中測試後,於7月在肯亞推出了第一個商業網際網路服務。
  • SEO算法:巴郎深談石榴算法與算法對策
    百度這麼做是為了什麼?答:星火計劃扶持原創(要求站長們要給高質量的內容)綠蘿算法打擊外鏈(走正道,別玩旁門左道)石榴算法針對站內SEO優化(別只想著搞錢,凡事要適度)每一步新計劃都是有戰略意義的。百度重在提升用戶體驗,已經到了非要整頓垃圾信息,提升用戶體驗的時候了。
  • 決策樹算法——選擇困難症的「良藥」
    實際上,在人工智慧領域,就有一種預測算法,利用樹杈的形狀,非常形象地來解決這種選擇問題,這就是決策樹算法,它是一個非常廣泛應用的算法,其原理是通過對一系列問題進行「是/否」的推導,最終實現決策。在機器學習發展到如今,決策樹算法越來越得到更多的應用,我們也可以說它是解決「選擇困難症」的良藥。本文為了讓讀者朋友較好理解該算法,用python編程進行一個實際應用的示範。
  • Python學習步驟
    可擴展:如果你需要一段運行很快的關鍵代碼,或者是想要編寫一些不願開放的算法,你可以使用C或C++完成那部分程序,然後從你的Python程序中調用。資料庫:Python提供所有主要的商業資料庫的接口。GUI編程:Python支持GUI可以創建和移植到許多系統調用。
  • python遞歸算法(上)
    要實現重複列印,可能我們立馬就會想到使用循環。如果要求不能使用循環呢,那我們就可以通過下面的方法來實現。原理很好理解,就是不斷的調用自身,如果前面不加上if條件判斷,理論上是會陷入死循環的,但是實際上遞歸到一定次數(最大遞歸次數)就會報錯停止。
  • Python入門指南教程:10天學會使用python做爬蟲!免費領取!
    從去年開始,公眾號鋪天蓋地的python廣告,讓很多行外人也知道了python這個東西,python語言開始變得無所不能,剛畢業的新手用python能做什麼?前些天我弟弟突然聊天,推薦我學python,我把聊天截圖給了學計算機的楊先生。楊先生的解釋:python和C語言、java一樣是一門程式語言。學會了或許可以三分鐘做好excel的數據分析。但是,為了寫這個三分鐘的程序,你可能要花一個星期的時間。
  • 7款Python開發神器,拿走不謝
    2、PipenvPipenv是為Python 設計的開發管理和依賴管理的工具,最早由 Requests 的作者 Kenneth Reitz 編寫。如果你用過 python,那麼管理環境,可能用過 virtualenv 或 venv 。
  • 機器學習中算法與模型的區別
    機器學習中的「算法」是什麼?機器學習中的「算法」是在數據上運行以創建機器學習「模型」的過程。機器學習算法執行「模式識別」。算法從數據中「學習」,或者對數據集進行「擬合」。機器學習算法有很多。
  • 漫畫:什麼是KMP算法?
    ,利用哈希值進行比較的RK算法,以及儘量減少比較次數的BM算法,沒看過的小夥伴可以點擊下方連結:1.BF算法和RK算法2. BM算法如果沒時間細看也沒關係,就讓我帶著大家簡單梳理一下。首先,給定 「主串」 和 「模式串」 如下:BF算法是如何工作的?
  • 五大常用算法:一文搞懂分治算法
    當然這些錢都是想出來的……分治算法介紹分治算法是用了分治思想的一種算法,什麼是分治?在計算機科學中,分治法就是運用分治思想的一種很重要的算法。分治法是很多高效算法的基礎,如排序算法(快速排序,歸併排序),傅立葉變換(快速傅立葉變換)等等。將父問題分解為子問題同等方式求解,這和遞歸的概念很吻合,所以在分治算法通常以遞歸的方式實現(當然也有非遞歸的實現方式)。
  • Python異常值檢測——kNN算法
    異常值檢驗方法有很多,針對不同數據特點,時間序列數據和截面數據的檢測方法不完全相同,其時常要考慮到數據特性,本次主要介紹相關的時序數據異常值檢測算法。今天介紹kNN算法(k--NearestNeighbor算法),又稱k-近鄰算法。簡單來說就是近朱者赤近墨者黑。
  • Python開發簡單爬蟲【學習資料總結】
    使用HTTPCookieProcessor; 需要代理才能訪問的網頁使用ProxyHandler; 需要HTTPS加密訪問的網站使用HTTPSHandler; 有些URL存在相互自動跳轉的關係使用