精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

插入排序算法的復雜性、性能、分析

星星科技指導員 ? 來源:NVIDIA ? 作者:Richmond Alake ? 2022-04-08 14:28 ? 次閱讀

算法在數據科學和機器學習領域很常見。算法為社交媒體應用程序、谷歌搜索結果、銀行系統等提供動力。因此,數據科學家和 機器學習 實踐者在分析、設計和實現算法方面擁有直覺是至關重要的。

當應用于大規模計算任務時,高效算法為公司節省了數百萬美元,并減少了內存和能源消耗。本文介紹了一種簡單的算法,插入排序。

雖然知道如何實現算法是必不可少的,但本文也包括了數據科學家在選擇利用時應該考慮的插入算法的細節。因此,本文提到了算法復雜性、性能、分析、解釋和利用等因素。

為什么?

重要的是要記住為什么數據科學家應該在解釋和實現之前研究數據結構和算法。

數據科學和 ML 庫和包抽象了常用算法的復雜性。此外,由于抽象,需要 100 行代碼和一些邏輯推導的算法被簡化為簡單的方法調用。這并沒有放棄數據科學家研究算法開發和數據結構的要求。

當給定一組要使用的預構建算法時,確定哪種算法最適合這種情況需要了解基本算法的參數、性能、限制和魯棒性。數據科學家可以在分析并在某些情況下重新實現算法后了解所有這些信息

選擇正確的特定于問題的算法和排除算法故障的能力是理解算法的兩個最重要的優勢。

K-Means 、 BIRCH 和 Mean Shift 都是常用的 clustering 算法,數據科學家決不具備從頭開始實施這些算法的知識。盡管如此,數據科學家仍有必要了解每種算法的特性及其對特定數據集的適用性。

例如,基于質心的算法有利于高密度數據集,在這些數據集中可以清楚地定義集群。相反,在處理噪聲數據集時,首選基于密度的算法,如 DBSCAN (基于密度的帶噪聲應用程序空間聚類)。

在排序算法的上下文中,數據科學家遇到了數據湖和數據庫,在這些數據湖和數據庫中,如果對包含的數據進行排序,則遍歷元素以識別關系的效率更高。

識別適用于數據集的庫子例程需要了解各種排序算法和首選的數據結構類型。使用數組時,快速排序算法是有利的,但如果數據以鏈表形式顯示,則合并排序的性能更高,尤其是在大數據集的情況下。不過,兩者都使用分而治之的策略對數據進行排序。

出身背景

什么是排序算法?

排序問題是數據科學家和其他軟件工程師面臨的一個眾所周知的編程問題。排序問題的主要目的是按升序或降序排列一組對象。排序算法是執行的順序指令,用于將列表或數組中的元素有效地重新排序為所需的順序。

分類的目的是什么?

在數據領域中,數據集中元素的結構化組織支持高效遍歷和快速查找特定元素或組。在宏觀層面上,使用高效算法構建的應用程序轉化為引入我們生活的簡單性,如導航系統和搜索引擎。

插入排序是什么?

插入排序算法涉及基于列表中每個元素與其相鄰元素的迭代比較創建的排序列表。

指向當前元素的索引指示排序的位置。排序開始時(索引= 0 ),將當前值與左側相鄰的值進行比較。如果該值大于當前值,則不修改列表;如果相鄰值和當前值是相同的數字,也會出現這種情況。

但是,如果當前值左側的相鄰值較小,則相鄰值位置將向左移動,并且僅當其左側的值較小時才停止向左移動。

該圖說明了插入算法在未排序列表上執行的步驟。下圖中的列表按升序排列(從低到高)。

圖 1 : GIF 中的插入排序 (此文件在 Creative Commons 下獲得許可)。

算法步驟和實現( PythonJavaScript )

臺階

要按升序排列元素列表,插入排序算法需要以下操作:

從未排序元素的列表開始。

從第一項到最后一項遍歷未排序元素的列表。

在每個步驟中,將當前元素與前面所有位置左側的元素進行比較。

如果當前元素小于前面列出的任何元素,則將其向左移動一個位置。

Python 實現

JavaScript 實現

性能和復雜性

在計算機科學領域,“大 O ”表示法是一種測量算法復雜性的策略。在這里,我們不會對大 O 符號太過技術化。不過,值得注意的是,計算機科學家使用這個數學符號來根據時間和空間需求對算法進行量化。

大 O 表示法是根據輸入定義的函數。字母“ n ”通常表示函數輸入的大小。簡單地說, n 表示列表中的元素數。在不同的場景中,實踐者關心函數的最壞情況、最佳情況或平均復雜度。

插入排序算法的最壞情況(和平均情況)復雜度為 O ( n 2)。這意味著,在最壞的情況下,對列表進行排序所需的時間與列表中元素數量的平方成正比。

插入排序算法的最佳時間復雜度為 O ( n )時間復雜度。這意味著對列表進行排序所需的時間與列表中元素的數量成正比;當列表的順序已經正確時,就是這種情況。在這種情況下,只有一次迭代,因為當列表已經有序時,內部循環操作是微不足道的。

插入排序常用于排列小列表。另一方面,插入排序并不是處理包含大量元素的大型列表的最有效方法。值得注意的是,在使用鏈表時,最好使用插入排序算法。雖然該算法可以應用于數組中結構化的數據,但其他排序算法,如快速排序,也可以應用于其他排序算法。

總結

最簡單的排序方法之一是插入排序,它涉及一次一個元素構建一個排序列表。通過將每個未檢查的元素插入排序列表中,在小于它和大于它的元素之間進行排序。正如本文所演示的,這是一個簡單的算法,可以在多種語言中掌握和應用。

通過清晰地描述插入排序算法,伴隨著所涉及的算法程序的逐步分解。數據科學家能夠更好地實現插入排序算法,并探索其他類似的排序算法,如快速排序和氣泡排序等。

對于許多數據科學家來說,算法可能是一個敏感的話題。這可能是由于主題的復雜性。“算法”一詞有時與復雜性有關。有了適當的工具、培訓和時間,即使是最復雜的算法,當您有足夠的時間、信息和資源時也很容易理解。算法是數據科學中使用的基本工具,不容忽視。

關于作者

Richmond Alake 是一名機器學習和計算機視覺工程師,他與多家初創公司和公司合作,整合深度學習模型,以解決商業應用中的計算機視覺任務。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7421

    瀏覽量

    87718
  • 機器學習
    +關注

    關注

    66

    文章

    8377

    瀏覽量

    132409
收藏 人收藏

    評論

    相關推薦

    光伏連接器外殼:超越簡單塑料的復雜性與重要

    將深入探討光伏連接器外殼的設計要求及其超越簡單塑料的復雜性與重要。 一、光伏連接器外殼的設計要求 材料選擇 光伏連接器的外殼并非簡單的塑料,而是需要經過精心選擇的材料,以滿足以下要求: 耐候:光伏系統通常安
    的頭像 發表于 11-04 14:50 ?98次閱讀
    光伏連接器外殼:超越簡單塑料的<b class='flag-5'>復雜性</b>與重要<b class='flag-5'>性</b>

    時間復雜度為 O(n^2) 的排序算法

    作者:京東保險 王奕龍 對于小規模數據,我們可以選用時間復雜度為 O(n2) 的排序算法。因為時間復雜度并不代表實際代碼的執行時間,它省去了低階、系數和常數,僅代表的增長趨勢,所以在小
    的頭像 發表于 10-19 16:31 ?1031次閱讀
    時間<b class='flag-5'>復雜</b>度為 O(n^2) 的<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    為什么電路要設計得這么復雜

    電路設計的復雜性主要源于以下幾個方面: 功能需求:電路需要實現特定的功能,如信號處理、數據傳輸、控制等。為了實現這些功能,電路必須包含相應的電子元件和連接,這自然增加了設計的復雜性性能要求:電路
    的頭像 發表于 08-21 17:32 ?368次閱讀

    飛凌OK-全志T527開發板nbench性能測試

    -計算波形級數近似的數值分析程序。 ASSIGNMENT一個著名的任務分配算法。 IDEA一種比較新的分組密碼算法。 HUFFMAN哈夫曼壓縮-一個著名的文本和圖形壓縮算法。 NEUR
    發表于 08-20 10:25

    戴爾科技如何幫助客戶克服多云環境的復雜性

    進入智能化時代,云的基礎設施地位更加穩固。在云上運行人工智能,可以更全面地收集、使用和分析數據,從而形成更加深刻的洞察。
    的頭像 發表于 07-30 11:22 ?503次閱讀

    手把手教你排序算法怎么寫

    今天以直接插入排序算法,給大家分享一下排序算法的實現思路,主要包含以下部分內容:插入排序介紹插入排序
    的頭像 發表于 06-04 08:03 ?644次閱讀
    手把手教你<b class='flag-5'>排序</b><b class='flag-5'>算法</b>怎么寫

    FPGA 原型設計開發復雜性策略

    FPGA 被封裝在更大的封裝中,從而提供了更多的 I/O。"然而,I/O 的增加并不像邏輯資源那樣引人注目。
    發表于 04-11 11:48 ?269次閱讀
    FPGA 原型設計開發<b class='flag-5'>復雜性</b>策略

    用FPGA實現雙調排序的方法(2)

    典型的排序算法包括冒泡排序、選擇排序插入排序、歸并排序、快速
    的頭像 發表于 03-21 10:28 ?604次閱讀
    用FPGA實現雙調<b class='flag-5'>排序</b>的方法(2)

    FPGA實現雙調排序算法的探索與實踐

    雙調排序(BitonicSort)是數據獨立(Data-independent)的排序算法,即比較順序與數據無關,特別適合并行執行。在了解雙調排序
    發表于 03-14 09:50 ?552次閱讀
    FPGA實現雙調<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索與實踐

    SAGE算法性能分析

    電子發燒友網站提供《SAGE算法性能分析.pdf》資料免費下載
    發表于 02-28 10:38 ?0次下載

    C語言實現經典排序算法概覽

    冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。
    的頭像 發表于 02-25 12:27 ?423次閱讀
    C語言實現經典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概覽

    解決選擇合適安全控制器的復雜性

    作者:Jeff Shepard 投稿人:DigiKey 北美編輯 工業系統中的安全是一個關鍵而復雜的主題,因此為給定應用指定最佳安全控制器具有挑戰。其中考慮因素包括與安全控制器相關的眾多
    的頭像 發表于 02-13 13:32 ?532次閱讀
    解決選擇合適安全控制器的<b class='flag-5'>復雜性</b>

    配網行波故障預警與定位裝置的實地運行性能分析

    今天江蘇宇拓電力科技來為大家說明一下配網行波故障預警與定位裝置的實地運行性能分析。 一、引言 隨著電力系統的復雜性和負荷的多樣化,對配電網的穩定性和可靠提出了更高的要求。在此背景下,
    的頭像 發表于 12-22 14:21 ?478次閱讀

    十大排序算法總結

    排序算法是最經典的算法知識。因為其實現代碼短,應該廣,在面試中經常會問到排序算法及其相關的問題。一般在面試中最常考的是快速
    的頭像 發表于 12-20 10:39 ?1082次閱讀

    時間復雜度為O (nlogn)的排序算法簡述

    歸并排序遵循分治的思想:將原問題分解為幾個規模較小但類似于原問題的子問題,遞歸地求解這些子問題,然后合并這些子問題的解來建立原問題的解。
    的頭像 發表于 12-05 09:57 ?558次閱讀
    時間<b class='flag-5'>復雜</b>度為O (nlogn)的<b class='flag-5'>排序</b><b class='flag-5'>算法</b>簡述