溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基礎算法的作用是什么

發(fā)布時間:2021-07-10 14:53:05 來源:億速云 閱讀:212 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“Python基礎算法的作用是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

  Python基礎算法有哪些?作用是什么?算法是解決問題的思想和實施步驟,而編程是算法的實現(xiàn),把人的語言轉(zhuǎn)換成某種的編程語言。常見內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。

  算法是指解題方案的準確而完整描述,一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。如果一個算法有缺陷或不適合于某個問題,執(zhí)行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優(yōu)劣可以用空間復雜度與時間復雜度來衡量。

  一、算法具有的重要特征

  1、有窮性:算法有窮性是指算法必須能在執(zhí)行有限個步驟之后終止;

  2、確切性:算法每一步驟必須有確切定義;

  3、輸入項:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件;

  4、輸出項:一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果,沒有輸出的算法毫無意義;

  5、可行性:算法中執(zhí)行的任何計算步驟都是可以被分解為基本的可執(zhí)行的操作步,即每個計算步都可以在有限時間內(nèi)完成也稱之為有效性。

  二、Python基礎算法

  1、冒泡排序

  冒泡排序也是一種簡單直觀的排序算法。重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果順序錯誤就交換過來。走訪數(shù)列的工作是重復地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。

  2、插入排序

  插入排序的代碼實現(xiàn)雖然沒有冒泡排序和選擇排序那么簡單粗暴,但原理是最容易理解,插入排序是一種最簡單直觀的排序算法,它的工作原理是通過構建有序序列,對于未排序數(shù)據(jù)在已排序序列中從后向前掃描,找到相應位置并插入。插入排序和冒泡排序一樣也有一種優(yōu)化算法叫做拆半插入。

  3、希爾排序

  希爾排序也稱遞減增量排序算法,是插入排序的一種更高效的改進版本。但希爾排序是非穩(wěn)定排序算法。希爾排序是基于插入排序的以下兩點性質(zhì)而提出改進方法的:插入排序在對幾乎已經(jīng)排好序的數(shù)據(jù)操作時,效率高,即可以達到線性排序的效率;但插入排序一般來說是低效的,因為插入排序每次只能將數(shù)據(jù)移動一位;希爾排序的基本思想是:先將整個待排序的記錄序列分割成為若干子序列分別進行直接插入排序,待整個序列中的記錄“基本有序”時,再對全體記錄進行依次直接插入排序。

  4、歸并排序

  歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法Divide and 的一個非常典型的應用。作為一種典型的分而治之思想的算法應用,歸并排序的實現(xiàn)由兩種方法:自上而下的遞歸;自下而上的迭代;

  5、快速排序

  快速排序是由東尼·霍爾所發(fā)展的一種排序算法。在平均狀況下,排序 n 個項目要 Ο(nlogn) 次比較。在最壞狀況下則需要 Ο(n2) 次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他算法更快,因為它的內(nèi)部循環(huán)可以在大部分的架構上很有效率地被實現(xiàn)出來??焖倥判蚴褂梅种畏ú呗詠戆岩粋€串行分為兩個子串行??焖倥判蛴质且环N分而治之思想在排序算法上的典型應用。本質(zhì)上快速排序應該算是在冒泡排序基礎上的遞歸分治法。

  6、堆排序

  堆排序是指利用堆這種數(shù)據(jù)結(jié)構所設計的一種排序算法。堆積是一個近似完全二叉樹的結(jié)構,并同時滿足堆積的性質(zhì):即子結(jié)點的鍵值或索引總是小于(或者大于)它的父節(jié)點。堆排序可以說是一種利用堆的概念來排序的選擇排序。分為兩種方法:大頂堆:每個節(jié)點的值都大于或等于其子節(jié)點的值,在堆排序算法中用于升序排列;小頂堆:每個節(jié)點的值都小于或等于其子節(jié)點的值,在堆排序算法中用于降序排列;

  7、計數(shù)排序

  計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。

  8、桶排序

  桶排序是計數(shù)排序的升級版。它利用了函數(shù)的映射關系,高效與否的關鍵就在于這個映射函數(shù)的確定。為了使桶排序更加高效,我們需要做到這兩點:在額外空間充足的情況下,盡量增大桶的數(shù)量,使用的映射函數(shù)能夠?qū)⑤斎氲?N 個數(shù)據(jù)均勻的分配到 K 個桶中,同時,對于桶中元素的排序,選擇何種比較排序算法對于性能的影響至關重要。

  9、基數(shù)排序

  基數(shù)排序是一種非比較型整數(shù)排序算法,其原理是將整數(shù)按位數(shù)切割成不同的數(shù)字,然后按每個位數(shù)分別比較。由于整數(shù)也可以表達字符串和特定格式的浮點數(shù),所以基數(shù)排序也不是只能使用于整數(shù)。

  在實際工作中比較常用的Python算法應用是排序,Python程序員需要了解排序引入、冒泡排序、選擇排序、插入排序、快速排序以及希爾排序等算法及其實現(xiàn)原理和復雜度。

“Python基礎算法的作用是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI