日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

1、算法是什么意思?

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

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

(1)有窮性

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

(2)確定性

每個(gè)步驟確定,步驟的結(jié)果確定。算法執(zhí)行的過(guò)程是與計(jì)算機(jī)交互的過(guò)程,每一步必須明確且具有符合語(yǔ)言規(guī)則,否則計(jì)算機(jī)無(wú)法執(zhí)行,會(huì)報(bào)錯(cuò)。

(3)可行性

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

(4)零個(gè)或多個(gè)輸入

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

(5)一個(gè)或多個(gè)輸出

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

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

(1)快速排序算法

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

因?yàn)樗膬?nèi)部循環(huán)(inner loop)可以在大部分的架構(gòu)上很有效率地被實(shí)現(xiàn)出來(lái)。快速排序使用分治法(Divide and conquer)策略來(lái)把一個(gè)串行(list)分為兩個(gè)子串行(sub-lists)。

算法步驟:

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

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

步驟3遞歸地(recursive)把小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序。遞歸的最底部情形,是數(shù)列的大小是零或一,也就是永遠(yuǎn)都已經(jīng)被排序好了。雖然一直遞歸下去,但是這個(gè)算法總會(huì)退出,因?yàn)樵诿看蔚牡╥teration)中,它至少會(huì)把一個(gè)元素?cái)[到它最后的位置去。

(2)堆排序算法

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

算法步驟:

步驟1創(chuàng)建一個(gè)堆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,臺(tái)灣譯作:合并排序)是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。

算法步驟:

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

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

步驟3比較兩個(gè)指針?biāo)赶虻脑?,選擇相對(duì)小的元素放入到合并空間,并移動(dòng)指針到下一位置

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

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

(4)二分查找算法

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

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

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

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

算法步驟:

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

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

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

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

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

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

編輯:jq

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

    關(guān)注

    90

    文章

    3724

    瀏覽量

    97458

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    軟件加密中有哪些常用的加密算法

    軟件加密中,哪些常用的加密算法?
    發(fā)表于 12-26 06:00

    用于單片機(jī)幾種C語(yǔ)言算法

    ,降低系統(tǒng)開支。 只要適當(dāng)改變?yōu)V波器的濾波程序或運(yùn)算,就能方便地改變其濾波特性,這對(duì)于濾除低頻干擾和隨機(jī)信號(hào)會(huì)有較大的效果。 在單片機(jī)系統(tǒng)中常用的濾波算法有限幅濾波法、中值濾波法、算術(shù)平均濾波法、加權(quán)平均
    發(fā)表于 11-27 06:00

    C語(yǔ)言的常見算法

    # C語(yǔ)言常見算法 C語(yǔ)言中常用算法可以分為以下幾大類: ## 1. 排序算法 ### 冒泡排序 (Bubble Sort) ```c void bubbleSort(int
    發(fā)表于 11-24 08:29

    8種常用的CRC算法分享

    CRC 計(jì)算單元可按所選擇的算法和參數(shù)配置來(lái)生成數(shù)據(jù)流的 CRC 碼。有些應(yīng)用中,可利用 CRC 技術(shù)來(lái)驗(yàn)證數(shù)據(jù)的傳輸和存儲(chǔ)的完整性。 8 種常用的 CRC 算法,包括: CRC16_IBM
    發(fā)表于 11-13 07:25

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進(jìn)行加密、解密運(yùn)算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴(kuò)展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    SM4算法原理及分享1

    SM4算法是一種分組密碼算法。其分組長(zhǎng)度為128bit,密鑰長(zhǎng)度也為128bit。加密算法與密鑰擴(kuò)展算法均采用32輪非線性迭代結(jié)構(gòu),以字(32位)為單位進(jìn)行加密運(yùn)算,每一次迭代運(yùn)算均
    發(fā)表于 10-30 06:54

    針對(duì)AES算法的安全防護(hù)設(shè)計(jì)

    無(wú)法獲取密鑰與功耗曲線之間的相關(guān)性。為確保加密算法在執(zhí)行過(guò)程中始終安全,全掩碼技術(shù)是最常用的一種方法。 根據(jù)AES加解密算法的特點(diǎn),結(jié)合我們提出的運(yùn)算結(jié)構(gòu),設(shè)計(jì)的全掩碼AES加解密電路的結(jié)構(gòu)如圖1所示
    發(fā)表于 10-28 07:38

    國(guó)密系列算法簡(jiǎn)介及SM4算法原理介紹

    一、 國(guó)密系列算法簡(jiǎn)介 國(guó)家商用密碼算法(簡(jiǎn)稱國(guó)密/商密算法),是由我國(guó)國(guó)家密碼管理局制定并公布的密碼算法標(biāo)準(zhǔn)。其分類1所示: 圖1 國(guó)家商用密碼
    發(fā)表于 10-24 08:25

    加密算法的應(yīng)用

    加密算法和非對(duì)稱加密算法兩類。 對(duì)稱加密是一種加密方式,也稱為共享密鑰加密。加密和解密使用同一個(gè)密鑰。這種加密算法的優(yōu)點(diǎn)是加密和解密速度快,適用于數(shù)據(jù)量較大的場(chǎng)景。但是,密鑰的傳輸和管理對(duì)安全性
    發(fā)表于 10-24 08:03

    數(shù)據(jù)濾波算法的具體實(shí)現(xiàn)步驟是怎樣的?

    (高頻電磁、瞬時(shí)脈沖等),選擇適配的濾波算法并落地。以下以電能質(zhì)量監(jiān)測(cè)中最常用的 IIR 低通濾波(抗高頻干擾)、滑動(dòng)平均濾波(抗瞬時(shí)脈沖)、卡爾曼濾波(抗動(dòng)態(tài)波動(dòng)) 為例,詳解具體實(shí)現(xiàn)步驟: 一、前置準(zhǔn)備:明確濾波目標(biāo)與硬件基
    的頭像 發(fā)表于 10-10 16:45 ?1027次閱讀

    PPEC電源DIY套件:圖形化算法編程,解鎖電力電子底層算法實(shí)踐

    智能化設(shè)計(jì)平臺(tái),為用戶提供了一個(gè)接觸和操作底層算法的便捷途徑。 用戶無(wú)需進(jìn)行復(fù)雜的代碼編寫,可以一鍵套用工程模版,也可以通過(guò)圖形化界面自定義控制算法,就能夠輕松在實(shí)驗(yàn)室有限的環(huán)境中制作實(shí)物電路,快速開發(fā)
    發(fā)表于 08-14 11:30

    DFT算法與FFT算法的優(yōu)劣分析

    算法之間什么不同,采用相關(guān)算法的依據(jù)。下面就來(lái)介紹一下兩種算法的不同以及適用的一些場(chǎng)合。 DFT算法,是連續(xù)傅里葉變換在時(shí)域和頻域上都離散
    的頭像 發(fā)表于 08-04 09:30 ?1801次閱讀

    在STM32F103c8上做DLQR最優(yōu)控制算法的C編程資料

    這是我近期做的一個(gè)項(xiàng)目--基于STM32F103c8的DLQR控制算法的C編程,涉及DLQR最優(yōu)控制算法、嵌入式STM32F103編程、CMSIS-DSP庫(kù)使用。? ??附有完整的程序
    發(fā)表于 07-23 15:30 ?0次下載

    單片機(jī)常用算法源碼下載!

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

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

    構(gòu)思創(chuàng)新理念。如今,Google 進(jìn)一步擴(kuò)展這些能力,將其應(yīng)用于解決數(shù)學(xué)基礎(chǔ)領(lǐng)域和現(xiàn)代計(jì)算中高度復(fù)雜的難題。 AlphaEvolve 是一款由大語(yǔ)言模型驅(qū)動(dòng)的進(jìn)化式編程代理,致力于通用算法的發(fā)現(xiàn)與優(yōu)化。該平臺(tái)將 Gemini 模型的創(chuàng)造性問(wèn)題解決能力與驗(yàn)證答案的自動(dòng)評(píng)估系
    的頭像 發(fā)表于 05-19 11:19 ?1938次閱讀
    AlphaEvolve:一款基于Gemini的<b class='flag-5'>編程</b>Agent,用于設(shè)計(jì)高級(jí)<b class='flag-5'>算法</b>
    河津市| 田阳县| 泉州市| 莲花县| 洞口县| 四会市| 南华县| 武穴市| 酉阳| 德阳市| 民乐县| 江达县| 会泽县| 堆龙德庆县| 西和县| 行唐县| 同江市| 济阳县| 浦北县| 博乐市| 荆州市| 芷江| 濮阳县| 陕西省| 永安市| 涪陵区| 共和县| 峨眉山市| 深泽县| 海伦市| 历史| 榆林市| 多伦县| 阜宁县| 永川市| 钟祥市| 望江县| 江津市| 乳源| 湄潭县| 南乐县|