一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是算法編程?最常用的算法有哪些

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者:C語言編程學(xué)習(xí)基地 ? 2021-07-26 11:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編程算法是什么意思?相信問這個問題的同學(xué)一定是個零基礎(chǔ)剛剛?cè)腴T編程的小白,針對這個問題,本文將介紹編程算法的基本概念,并且盤點五個經(jīng)典的編程算法,幫助大家基礎(chǔ)入門。

1、算法是什么意思?

算法是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制,就是生活中的實際問題,轉(zhuǎn)化成數(shù)學(xué)問題去解決,將實際的抽象性問題轉(zhuǎn)換成數(shù)理性的問題去解決。

算法的五大特征是,有窮性,可行性,確切性,輸入,輸出。凡是任何一個算法都必須滿足這5個基本特征,只要是數(shù)學(xué)問題,不存在模棱兩可的事情。哪怕是概率問題在數(shù)學(xué)里專門有一門課程叫“概率論”與之對應(yīng),能將這些不確定問題進行數(shù)學(xué)化。

(1)有窮性

在有限的操作步驟內(nèi)完成。否則計算機會一直執(zhí)行到資源耗盡后死機。

(2)確定性

每個步驟確定,步驟的結(jié)果確定。算法執(zhí)行的過程是與計算機交互的過程,每一步必須明確且具有符合語言規(guī)則,否則計算機無法執(zhí)行,會報錯。

(3)可行性

每個步驟有效執(zhí)行,得到確定的結(jié)果。每一個具體步驟在通過計算機實現(xiàn)時應(yīng)能夠使計算機完成,如果這一步驟在計算機上無法實現(xiàn),也就達不到預(yù)期的目的,那么這一步驟是不完善的和不正確的,是不可行的。

(4)零個或多個輸入

從外界獲得信息。算法的過程可以無數(shù)據(jù)輸入,也可以有多種類型的多個數(shù)據(jù)輸入,需根據(jù)具體的問題加以分析。

(5)一個或多個輸出

算法得到的結(jié)果就是算法的輸出(不一定就是打印輸出)。算法的目的是為解決一個具體問題,一旦問題得以解決,就說明采取的算法是正確的,而結(jié)果的輸出正是驗證這一目的的最好方式。

2、經(jīng)典編程算法盤點

(1)快速排序算法

快速排序是由東尼·霍爾所發(fā)展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他Ο(n log n) 算法更快。

因為它的內(nèi)部循環(huán)(inner loop)可以在大部分的架構(gòu)上很有效率地被實現(xiàn)出來??焖倥判蚴褂梅种畏ǎ―ivide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)。

算法步驟:

步驟1從數(shù)列中挑出一個元素,稱為 “基準”(pivot),

步驟2重新排序數(shù)列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數(shù)可以到任一邊)。在這個分區(qū)退出之后,該基準就處于數(shù)列的中間位置。這個稱為分區(qū)(partition)操作。

步驟3遞歸地(recursive)把小于基準值元素的子數(shù)列和大于基準值元素的子數(shù)列排序。遞歸的最底部情形,是數(shù)列的大小是零或一,也就是永遠都已經(jīng)被排序好了。雖然一直遞歸下去,但是這個算法總會退出,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最后的位置去。

(2)堆排序算法

堆排序(Heapsort)是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。堆積是一個近似完全二叉樹的結(jié)構(gòu),并同時滿足堆積的性質(zhì):即子結(jié)點的鍵值或索引總是小于(或者大于)它的父節(jié)點。堆排序的平均時間復(fù)雜度為Ο(nlogn) 。

算法步驟:

步驟1創(chuàng)建一個堆H[0..n-1]

步驟2把堆首(最大值)和堆尾互換

步驟3把堆的尺寸縮小1,并調(diào)用shift_down(0),目的是把新的數(shù)組頂端數(shù)據(jù)調(diào)整到相應(yīng)位置

步驟4重復(fù)步驟2,直到堆的尺寸為1

(3)歸并排序

歸并排序(Merge sort,臺灣譯作:合并排序)是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應(yīng)用。

算法步驟:

步驟1申請空間,使其大小為兩個已經(jīng)排序序列之和,該空間用來存放合并后的序列

步驟2設(shè)定兩個指針,最初位置分別為兩個已經(jīng)排序序列的起始位置

步驟3比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置

步驟4重復(fù)步驟3直到某一指針達到序列尾

步驟5將另一序列剩下的所有元素直接復(fù)制到合并序列尾

(4)二分查找算法

二分查找算法是一種在有序數(shù)組中查找某一特定元素的搜索算法。搜素過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜 素過程結(jié)束;

如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數(shù)組 為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。折半搜索每次把搜索區(qū)域減少一半,時間復(fù)雜度為Ο(logn) 。

(5)BFPRT(線性查找算法)

BFPRT算法解決的問題十分經(jīng)典,即從某n個元素的序列中選出第k大(第k小)的元素,通過巧妙的分 析,BFPRT可以保證在最壞情況下仍為線性時間復(fù)雜度。該算法的思想與快速排序思想相似,當(dāng)然,為使得算法在最壞情況下,依然能達到o(n)的時間復(fù)雜 度,五位算法作者做了精妙的處理。

算法步驟:

步驟1將n個元素每5個一組,分成n/5(上界)組。

步驟2取出每一組的中位數(shù),任意排序方法,比如插入排序。

步驟3遞歸的調(diào)用selection算法查找上一步中所有中位數(shù)的中位數(shù),設(shè)為x,偶數(shù)個中位數(shù)的情況下設(shè)定為選取中間小的一個。

步驟4用x來分割數(shù)組,設(shè)小于等于x的個數(shù)為k,大于x的個數(shù)即為n-k。

步驟5若i==k,返回x;若i《k,在小于x的元素中遞歸查找第i小的元素;若i》k,在大于x的元素中遞歸查找第i-k小的元素。終止條件:n=1時,返回的即是i小元素。

以上就是編程算法的全部內(nèi)容,相信看完大家都應(yīng)該明白了“編程算法是什么”。這些都是編程的基礎(chǔ)知識,大家一定要掌握哦!

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3689

    瀏覽量

    95266

原文標題:初學(xué)編程:算法編程是什么意思?盤點最常用的 5 大算法!

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    單片機常用算法源碼下載!

    單片機常用算法源碼下載!
    發(fā)表于 06-10 20:44

    AlphaEvolve:一款基于Gemini的編程Agent,用于設(shè)計高級算法

    構(gòu)思創(chuàng)新理念。如今,Google 進一步擴展這些能力,將其應(yīng)用于解決數(shù)學(xué)基礎(chǔ)領(lǐng)域和現(xiàn)代計算中高度復(fù)雜的難題。 AlphaEvolve 是一款由大語言模型驅(qū)動的進化式編程代理,致力于通用算法的發(fā)現(xiàn)與優(yōu)化。該平臺將 Gemini 模型的創(chuàng)造性問題解決能力與驗證答案的自動評估系
    的頭像 發(fā)表于 05-19 11:19 ?984次閱讀
    AlphaEvolve:一款基于Gemini的<b class='flag-5'>編程</b>Agent,用于設(shè)計高級<b class='flag-5'>算法</b>

    藍牙信標RSSI濾波算法

    藍牙信標RSSI濾波算法?主要用于處理RSSI值的不穩(wěn)定性和噪聲,以提高距離估計的準確性。RSSI(接收信號強度指示)是藍牙信標中常用的參數(shù),用于評估設(shè)備之間的距離或信號質(zhì)量。然而,RSSI值的測量
    的頭像 發(fā)表于 05-12 19:45 ?295次閱讀
    藍牙信標RSSI濾波<b class='flag-5'>算法</b>

    PID控制算法的C語言實現(xiàn):PID算法原理

    在工業(yè)應(yīng)用中 PID 及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法,如果能夠熟練掌握 PID 算法的設(shè)計與實現(xiàn)過程,對于一般的研發(fā)人員來講,應(yīng)該是足夠應(yīng)對一般研發(fā)問題了,而
    發(fā)表于 02-26 15:24

    EE-39:將5V閃存與ADSP-218x接口(字節(jié)編程算法

    電子發(fā)燒友網(wǎng)站提供《EE-39:將5V閃存與ADSP-218x接口(字節(jié)編程算法).pdf》資料免費下載
    發(fā)表于 01-15 16:11 ?0次下載
    EE-39:將5V閃存與ADSP-218x接口(字節(jié)<b class='flag-5'>編程</b><b class='flag-5'>算法</b>)

    高薪 mcu 觸控算法專家(觸控按鍵,不要觸控屏)

    觸控應(yīng)用@ 算法專家(白色家電)按鍵觸摸 (Emma 18149712160 同微信) 工作職責(zé): 1、負責(zé)小華觸摸應(yīng)用的芯片產(chǎn)品和方案規(guī)劃; 2、負責(zé)小華觸摸方案(客戶可量產(chǎn))的開發(fā)和交付; 3
    發(fā)表于 12-27 14:12

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+內(nèi)容簡介

    。本書力求從算法、芯片設(shè)計、軟件開發(fā)等多個角度解讀基礎(chǔ)算法電路的設(shè)計,涵蓋了溢出保護、符號運算、浮點運算、位寬確定等運算電路基礎(chǔ)知識,以及除法器、信號發(fā)生器、濾波器、小數(shù)分頻器等常用
    發(fā)表于 11-21 17:14

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+介紹基礎(chǔ)硬件算法模塊

    作為嵌入式開發(fā)者往往比較關(guān)注硬件和軟件的協(xié)調(diào)。本書介紹了除法器,信號發(fā)生器,濾波器,分頻器等基本算法的電路實現(xiàn),雖然都是基礎(chǔ)內(nèi)容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢的出現(xiàn),過去的研發(fā)
    發(fā)表于 11-21 17:05

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+一本介紹基礎(chǔ)硬件算法模塊實現(xiàn)的好書

    看下本書內(nèi)容簡介,然后再瀏覽下各個章節(jié)的內(nèi)容。 從簡介來看,本書也是關(guān)注最基礎(chǔ),最常用的那部分算法的電路實現(xiàn),比較貼合工程實踐,適合無基礎(chǔ)或者一定基礎(chǔ)的一線工程人員閱讀。內(nèi)容選擇是貼合實踐
    發(fā)表于 11-20 13:42

    請問GDE中的NR算法反應(yīng)慢怎么解決?

    我在使用NR(NoiseReduction)算法時發(fā)現(xiàn)算法起作用的時間太長,輸入1K正弦波測試,大約是在輸入40秒以后出現(xiàn)下圖轉(zhuǎn)變 再過段時間又變成下圖的樣子。 但是播放器重新開始的短暫停止也
    發(fā)表于 10-29 07:42

    aic3254有沒有降低環(huán)境噪聲的算法

    請問aic3254有沒有降低環(huán)境噪聲的算法?或者哪些算法的組合可以降低環(huán)境噪音?
    發(fā)表于 10-24 08:25

    名單公布!【書籍評測活動NO.46】從算法到電路 | 數(shù)字芯片算法的電路實現(xiàn)

    的,熟練掌握這些基本算法電路是實現(xiàn)復(fù)雜算法電路的基礎(chǔ)。忽視基本算法及其電路設(shè)計而談?wù)搹?fù)雜算法電路,無異于癡人說夢。 本書力求從算法、芯片設(shè)計
    發(fā)表于 10-09 13:43

    常用的ADC濾波算法哪些

    ADC(模數(shù)轉(zhuǎn)換器)濾波算法在信號處理中起著至關(guān)重要的作用,它們能夠幫助我們提取出有用的信號,同時濾除噪聲和干擾。以下是常用的ADC濾波算法詳解,這些算法各具特色,適用于不同的應(yīng)用場景
    的頭像 發(fā)表于 10-08 14:35 ?1171次閱讀

    人員軌跡分析算法哪些?

    時段等。這些信息可以對城市規(guī)劃、交通管理、公共安全等方面具有重要的指導(dǎo)意義。而為了實現(xiàn)人員軌跡分析,我們需要使用一些專門的算法和技術(shù)。 下面是幾種常用的人員軌跡分析算法: 1. 基于密度的聚類
    的頭像 發(fā)表于 09-26 10:42 ?933次閱讀

    Python建模算法與應(yīng)用

    上成為理想的腳本語言,特別適用于快速的應(yīng)用程序開發(fā)。本文將詳細介紹Python在建模算法中的應(yīng)用,包括常見的建模算法、Python在建模中的優(yōu)勢、常用庫以及實際案例。
    的頭像 發(fā)表于 07-24 10:41 ?1274次閱讀