国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

八大排序/八大排序口述版/八大排序面試版/八大排序思路(冒泡排序/選擇排序/插入排序/希爾排序/歸并排序/快速排序/堆排序/基數(shù)排序)

這篇具有很好參考價(jià)值的文章主要介紹了八大排序/八大排序口述版/八大排序面試版/八大排序思路(冒泡排序/選擇排序/插入排序/希爾排序/歸并排序/快速排序/堆排序/基數(shù)排序)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在算法和開發(fā)的面試中,經(jīng)常會(huì)讓你口述一下排序的某個(gè)算法的原理和思路,我整理了一下這八大排序的口述思路。

如果需要詳細(xì)版本,包含思路、解析、代碼、時(shí)間復(fù)雜度、空間復(fù)雜度、穩(wěn)定性分析以及排序之間的詳細(xì)比較的內(nèi)容,請(qǐng)看這篇文章:

Python實(shí)現(xiàn)八大排序:排序特點(diǎn)/原理解析/思路解析/代碼解析/考點(diǎn)解析/面試考試點(diǎn)睛(冒泡排序/選擇排序/插入排序/希爾排序/歸并排序/快速排序/堆排序/基數(shù)排序)_python排序從大到小_會(huì)害羞的楊卓越的博客-CSDN博客

1、冒泡排序

  1. 第一個(gè)數(shù)和第二個(gè)數(shù)比較,第一個(gè)數(shù)大則交換
  2. 第二個(gè)數(shù)和第三個(gè)數(shù)交換,第三個(gè)數(shù)大則交換
  3. 一直到最后一個(gè)數(shù),則此時(shí)最后一個(gè)數(shù)為最大,最后一個(gè)數(shù)進(jìn)入了已排序序列
  4. 重復(fù)1-3步驟,繼續(xù)對(duì)前面n-1個(gè)數(shù)進(jìn)行排序,完成排序

2、選擇排序

  1. 第一步:選擇第一個(gè)數(shù)的索引為最小數(shù)的索引
  2. 第二步:對(duì)剩下n-1個(gè)數(shù)進(jìn)行遍歷比較,遇到比當(dāng)前最小索引數(shù)小的數(shù),則更新最小索引
  3. 第三步:將新的最小索引數(shù)與第一個(gè)數(shù)進(jìn)行交換,第一個(gè)數(shù)進(jìn)入已排序序列(如果最小索引沒有發(fā)生過變化,則不需要交換)
  4. 第四步:重復(fù)1-3步驟,繼續(xù)對(duì)后面n-1個(gè)數(shù)進(jìn)行排序,完成排序

3、插入排序

  1. 將第一個(gè)數(shù)與第二個(gè)數(shù)比較,第一個(gè)數(shù)大則交換,前面兩個(gè)數(shù)進(jìn)入已排序序列,第三個(gè)數(shù)為未排序序列的第一個(gè)數(shù)
  2. 未排序序列的數(shù)與已排序序列的所有數(shù)進(jìn)行比較,將當(dāng)前未排序序列的數(shù)插入到已排序序列的數(shù)
  3. 重復(fù)這個(gè)過程,完成排序

4、希爾排序


希爾排序也是插入排序的一種,對(duì)直接插入排序進(jìn)行了改進(jìn),它采用了一種分組的策略使用直接插入排序,讓排序的效率變得更高。分組數(shù)(也就是常說的gap,增量)

  1. 設(shè)為gap = n/2,向下取整,對(duì)gap個(gè)分組的每個(gè)小組的數(shù)進(jìn)行直接插入排序
  2. 將gap更新為gap = gap /2,向下取整,對(duì)gap個(gè)分組的每個(gè)小組的數(shù)進(jìn)行直接插入排序
  3. 重復(fù)這個(gè)過程直到gap為1,就是一個(gè)分組,即對(duì)整個(gè)數(shù)組進(jìn)行一次直接插入排序

比如有10個(gè)數(shù),第一次分組數(shù)就是10/2=5,這個(gè)5個(gè)分組對(duì)應(yīng)的數(shù)的序號(hào)為:
(1,6)(2,7)(3,8)(4,9)(5,10)
對(duì)5個(gè)小組的所有數(shù)都進(jìn)行一次直接插入排序
第二次分組數(shù)為5/2 = 2,這2個(gè)分組對(duì)應(yīng)的數(shù)的序號(hào)為:
(1,3,5,7,9)(2,4,6,8,10)
對(duì)2個(gè)小組的所有數(shù)都進(jìn)行一次直接插入排序

5、歸并排序

主要采用分割和合并的思路進(jìn)行排序

  1. 將數(shù)組按照最中間索引,分割為左右兩個(gè)數(shù)組(奇數(shù)個(gè)數(shù)的數(shù)組左右兩個(gè)數(shù)組的元素個(gè)數(shù)相差為1)
  2. 將左右兩個(gè)數(shù)組繼續(xù)分割為左右兩個(gè)數(shù)組,直到分割到數(shù)組只有一個(gè)元素
  3. 創(chuàng)建一個(gè)空的數(shù)組,依次遍歷左右數(shù)組,比較左右數(shù)組的第一個(gè)元素的大小,較小的那個(gè)元素從對(duì)應(yīng)數(shù)組中彈出
  4. 重復(fù)3的過程,直到兩個(gè)數(shù)組的元素都彈出,即都合并到了新數(shù)組中
  5. 按照1、2分割的方式,重復(fù)3、4的過程,繼續(xù)合并左右數(shù)組,直到合并至最后一個(gè)數(shù)組完成排序

因此可以看出歸并排序需要的內(nèi)存資源明顯比較大(空間復(fù)雜度較高)

6、快速排序

第一個(gè)數(shù)為記作temp,最左邊索引記為left,最右邊為right,mid=(left+right)/2

  1. 從nums[right]開始找比nums[left]小的數(shù),找不到right一直左移,找到將nums[right]賦給nums[left]
  2. 從nums[left]開始找比nums[right]大的數(shù),找不到left一直左移,找到將nums[left]賦給nums[right]
  3. 重復(fù)1-2的過程,使得left=right=mid,將temp賦給nums[left]
  4. 將原來的數(shù)組按照mid分割為兩個(gè)部分,將剩下的兩個(gè)部分重復(fù)1-3的過程
  5. 將剩下的數(shù)組繼續(xù)按照mid分割為兩個(gè)部分,重復(fù)1-4的過程

7、堆排序

大頂堆是一個(gè)每一個(gè)結(jié)點(diǎn)的值都大于左右子樹的結(jié)點(diǎn)的值的完全二叉樹,小頂堆是一個(gè)每一個(gè)結(jié)點(diǎn)的值都小于左右子樹的結(jié)點(diǎn)的值的完全二叉樹。在實(shí)際編程中,不需要構(gòu)造完全二叉樹這個(gè)數(shù)據(jù)結(jié)構(gòu),一個(gè)結(jié)點(diǎn)的索引為i時(shí),它的左右子樹的索引分別為(2i+1)、(2i+2),它的父節(jié)點(diǎn)的索引為ceil(i/2)-1。ceil是一個(gè)向下取整的python函數(shù)

  1. 構(gòu)造一個(gè)完全二叉樹,將數(shù)組的數(shù)依次放入完全二叉樹中
  2. 調(diào)整這個(gè)完全二叉樹為一個(gè)大頂堆
  3. 交換根節(jié)點(diǎn)和最后一個(gè)結(jié)點(diǎn)的值,取出最后一個(gè)結(jié)點(diǎn)的值到已排序序列中
  4. 刪除最后一個(gè)結(jié)點(diǎn)
  5. 重復(fù)2-4的過程,直到刪除整個(gè)完全二叉樹,完成排序

8、基數(shù)排序

  1. 首先找出最大的數(shù),將它的位數(shù)記為k
  2. 構(gòu)造一個(gè)桶結(jié)構(gòu),包含10個(gè)組,編號(hào)記為0-9
  3. 將原數(shù)組按進(jìn)行遍歷取出,將當(dāng)前遍歷的數(shù)按照個(gè)位上0-9數(shù)放入對(duì)應(yīng)0-9編號(hào)桶中
  4. 將桶中的數(shù)按照順序放回?cái)?shù)組中
  5. 將個(gè)位換成10位,重復(fù)2-4的過程,直到達(dá)到k位

因此可以知道,基數(shù)排序?qū)τ诟↑c(diǎn)數(shù)、位數(shù)大的數(shù)有更好的效率。

這就是8大排序的口述版的全部?jī)?nèi)容了,有點(diǎn)的話拜托點(diǎn)贊、收藏、關(guān)注哦。

?如果需要詳細(xì)版本,包含思路、解析、代碼、時(shí)間復(fù)雜度、空間復(fù)雜度、穩(wěn)定性分析以及排序之間的詳細(xì)比較的內(nèi)容,請(qǐng)看這篇文章:

Python實(shí)現(xiàn)八大排序:排序特點(diǎn)/原理解析/思路解析/代碼解析/考點(diǎn)解析/面試考試點(diǎn)睛(冒泡排序/選擇排序/插入排序/希爾排序/歸并排序/快速排序/堆排序/基數(shù)排序)_python排序從大到小_會(huì)害羞的楊卓越的博客-CSDN博客

我的主頁(yè)還有許多其他非常有價(jià)值的NLP內(nèi)容

Transformer提出文章論文精讀:

Transformer:《Attention is all you need》(論文精讀/原理解析/模型架構(gòu)解讀/源碼解析/相關(guān)知識(shí)點(diǎn)解析/相關(guān)資源提供)_會(huì)害羞的楊卓越的博客-CSDN博客

Transformer解讀:

Transformer算法解讀(self-Attention/位置編碼/多頭注意力/掩碼機(jī)制/QKV/Transformer堆疊/encoder/decoder)_會(huì)害羞的楊卓越的博客-CSDN博客

Hugging Face實(shí)戰(zhàn):

Hugging Face實(shí)戰(zhàn)(NLP實(shí)戰(zhàn)/Transformer實(shí)戰(zhàn)/預(yù)訓(xùn)練模型/分詞器/模型微調(diào)/模型自動(dòng)選擇/PyTorch版本/代碼逐行解析)上篇之模型調(diào)用_會(huì)害羞的楊卓越的博客-CSDN博客

bert系列算法

BERT系列算法解讀:(RoBERTa/ALBERT/DistilBERT/Transformer/Hugging Face/NLP/預(yù)訓(xùn)練模型/模型蒸餾)_會(huì)害羞的楊卓越的博客-CSDN博客

包括一些大方向的內(nèi)容:

深度學(xué)習(xí)五大基本網(wǎng)絡(luò)_常用深度學(xué)習(xí)網(wǎng)絡(luò)_會(huì)害羞的楊卓越的博客-CSDN博客

機(jī)器學(xué)習(xí)算法(全教程/全解析/源碼全解/實(shí)戰(zhàn)教程)_會(huì)害羞的楊卓越的博客-CSDN博客

人工智能的分類:機(jī)器學(xué)習(xí)/專家系統(tǒng)/推薦系統(tǒng)/知識(shí)圖譜/強(qiáng)化學(xué)習(xí)/遷移學(xué)習(xí)/特征工程/模式識(shí)別_會(huì)害羞的楊卓越的博客-CSDN博客

計(jì)算機(jī)視覺:

openCV基礎(chǔ)教程_會(huì)害羞的楊卓越的博客-CSDN博客

陸續(xù)更新中,有用的話拜托點(diǎn)贊收藏哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-641724.html

到了這里,關(guān)于八大排序/八大排序口述版/八大排序面試版/八大排序思路(冒泡排序/選擇排序/插入排序/希爾排序/歸并排序/快速排序/堆排序/基數(shù)排序)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包