久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > 可視化選擇排序算法

可視化選擇排序算法

來源:千鋒教育
發(fā)布人:syq
時間: 2022-09-22 16:03:00 1663833780

  選擇排序

  讓我們以最簡單的排序算法之一為例:找到數(shù)組中最小的元素并將其與第一個位置的元素交換,然后找到下一個最小的元素并將其與第二個位置的元素交換,然后繼續(xù)直到數(shù)組被排序。此方法稱為選擇排序。在每個外部循環(huán)之后繪制將得到以下輸出:

32

  以下是我們可以快速編寫的程序:

33

  該算法編寫起來不太困難,并且此實現(xiàn)的效率為 。在每個外部循環(huán)的末尾添加 A 以生成我們的輸出。O(n^2)console.log

  如何為字母添加動畫效果?

  現(xiàn)在讓我們假設我們想要對它進行動畫處理。例如,每次我們交換兩個元素時,我們都可以期望看到兩個元素相互移動并最終在新位置安頓下來的平穩(wěn)過渡。

34

  讓我們使用 HTML/CSS 來實現(xiàn)這一點。假設我們在數(shù)組中有 14 個字母:

35

  要將字母移動到不同的位置,我們可以將其位置設置為 從 到 假設每個字母都占據(jù) 。為了使動畫有點流暢,我們可以添加 ,以允許動畫花費1秒,并具有一些輕松的感覺。S absolute 32px 320px 32px transition

  我們制作什么動畫?

  好的,HTML和CSS是確保字母在屏幕上移動的基本要素。但是我們需要一種方法來創(chuàng)建與動畫幀關(guān)聯(lián)的狀態(tài)。然后,我們可以在新位置顯示字母,以防狀態(tài)發(fā)生變化。

  考慮保存陣列內(nèi)容:initialArr

36

  我們想問以下問題。如果我們跟蹤第一個字母,它將移動到什么位置?同樣,如果仔細觀察第二封信,它會移動到什么位置?從本質(zhì)上講,我們希望跟蹤每個字母的位置。聽起來很直觀,當你在研究算法時,這可能是一個非常不同的體驗,你可以跟蹤其他任何東西,大多數(shù)時候是派生的屬性。as

  假設我們使用數(shù)組來跟蹤每個字母的位置。例如,最初,第一個字母的位置是 ,第二個字母的位置是 。但是經(jīng)過幾次移動后,第二個字母可以移動到位置 。假設我們知道當前運行的數(shù)組,我們可以使用以下 React 代碼顯示每個字母:index 0 1 10 index

37

  我們從14個字母開始,以14個字母結(jié)束,因為它們是唯一的對象(盡管它們可以有重復的符號)。因此,我們無意更改對象列表;相反,我們只想計算出它們的當前位置,然后將其乘以32,如 .left: v * 32

  如何生成倉位?

  好的,現(xiàn)在給定一個位置列表,我們可以在屏幕上顯示它們。但是,誰來給我們每幀的所有位置呢?當然,這是我們試圖研究的算法。讓我們在 JavaScript 生成器函數(shù)的幫助下創(chuàng)建一個:

38

  我相信你可以從上面的代碼中看到我們的算法。有兩個循環(huán),每個內(nèi)部循環(huán)后都有一個交換。它比算法本身稍微復雜一點,但總的來說,它是一個直接的翻譯。開銷是我們希望跟蹤每個字母在 中的位置,而不是最終排序的數(shù)組 。indexarr

  最重要的一行是 ,我們在其中暫停算法并輸出 。這就是我們獲取當前狀態(tài)的方式。為了將所有內(nèi)容放在一起,我們得到了以下組件:yield { index }index App

39

  從本質(zhì)上講,我們設置了一次性操作,以便在加載后運行動畫循環(huán),然后首先組裝生成器 。之后,對于每一秒,我們調(diào)用以獲取下一個位置列表。React 將確保每次更新都會觸發(fā)屏幕的渲染,以使所有字母保持最新狀態(tài)。useEffectAppg=gen(initialArr)1000msg.next()setIndex(index)

  想要制作更多動畫效果?

  從這一刻起,只需考慮要制作更多元素的動畫即可。例如,在交換之前有一個時刻,我們想首先從變量跟蹤的中識別出我們正在比較的字母。i

  在這種情況下,我們需要修改生成器函數(shù):

40

  我們可以再添加一行輸出,誰說我們只能生成一種類型的項目,誰說我們只能生成相同類型的數(shù)據(jù)。在這里,我們可以通過以下方式跟蹤字母的位置。我們還將此操作命名為 。所有這些都可以根據(jù)您自己的目的進行修改。當我們開始使用這個生成器時,我們可以用新的數(shù)據(jù)集做更多的事情:ii loop

41

  將創(chuàng)建新的狀態(tài)變量來跟蹤位置。如果它與任何字母匹配,它會附加一個CSS類,因此您可以以不同的方式顯示它。outterId ii highlight

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
深度學習模型權(quán)重h5、weights、ckpt、pth有什么區(qū)別?

1.來源框架不同h5格式通常用于Keras和TensorFlow框架,weights用于Darknet框架,ckpt是TensorFlow框架的一種格式,而pth則主要用于PyTorch框架...詳情>>

2023-10-15 00:05:17
大數(shù)據(jù)測試工程師需要具備哪些技能?

一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

2023-10-14 23:43:03
為什么SpringBoot的 jar 可以直接運行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

2023-10-14 23:01:49
站群服務器是什么?

站群服務器的含義與用途站群服務器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

2023-10-14 22:46:12
自編碼器是什么?

一、自編碼器原理自編碼器的設計靈感源于神經(jīng)科學中關(guān)于感知系統(tǒng)的認知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

2023-10-14 22:41:10