色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

插入排序和冒泡排序哪個更牛逼?

算法與數據結構 ? 來源:算法與數據結構 ? 2019-11-27 16:13 ? 次閱讀

寫在前邊

排序對于每個開發者來講,都多多少少知道幾個經典的排序算法,比如我們之前以動畫形式分享的冒泡排序,也包括今天要分享的插入排序。還有一些其他經典的排序,小鹿整理的共有十種是面試常問到的,冒泡排序、插入排序、希爾排序、選擇排序、歸并排序、快速排序、堆排序、桶排序、計數排序、基數排序。

雖然我們基本知道了這些排序算法,但是在實際項目開發以及面試中往往出乎我們所料。在面試中,經常會被問到各種排序之間的比較;在實際項目中,往往排序的數據不是我們所練習的整數。

那么今天我們來學習一下,插入排序比我們之前講的冒泡排序有什么區別呢?面試官問我們,我們如何回答完整呢?

思維導圖

1

如何分析一個排序算法?

之前寫的一篇很詳細的文章。

佩奇學編程 | 復雜度分析原來這么簡單

分析排序算法已經成為我們衡量一個算法優良的重要標準,從以下三個方面入手。

1.1 時間效率

這里所謂的實踐效率就是時間復雜度,相信大家對于時間復雜度并不陌生。

復雜度描述的是算法執行時間(或占用空間)與數據規模的增長關系。

對于時間復雜度的分析,要把最好時間復雜度、最壞時間復雜度、平均時間復雜度分析出來,分別對應了排序算法的最好排序情況、最壞排序情況以及平均排序效率。

1.2 空間消耗

所謂的空間消耗對應的是空間復雜度,在排序算法中需要開辟的額外內存空間是多少。如果空間復雜度為 O(1),此時該排序叫做原地排序。

注意:是額外的內存空間,存儲排序數據消耗的空間不計。

1.3 穩定性

算法的穩定性雖然我們之前接觸的很少,但是穩定性也是衡量一個排序算法的重要標準。什么是穩定排序呢?比如有一組有重復待排序的數據,排序前后,重復的數據順序不變,此時該排序為穩定排序。否則,叫做不穩定排序。它在實際應用中非常重要的,今天我們就不多說,以后會慢慢分享到。

2

什么是插入排序?

顧名思義,插入排序就是通過插入的方式來排序唄,最經典的就是打斗地主,可以將打亂的撲克牌作為未排序區間,手中已經排好序的作為排序區間。每次我們摸牌的過程,就是從未排序區間,通過插入的方式,插入到已排序區間。那么這個過程就稱為插入排序。

3

如何實現插入排序?

上述插入排序的概念我們已經理解了,那么給你一組數據,如何來進行插入排序呢?

首先我們要將數據劃分為兩個區間,已排序區間和未排序區間。

我們從未排序區間取出數據和已排序區間的數據進行比較,如果小于已排序區間的數據,那我們就交換數據。

如果交換到已排序區間數據不在大于插入的數據,然后將元素插入進去。

最后我們看一下總的插入排序動畫和代碼實現。

4

插入排序的性能

我們通過上邊的對插入排序的拆分講解和動畫以及代碼實現,想必面試官讓你手寫一個插入排序可以輕輕松松寫出。但是我們掌握的插入排序知識還往往不夠,我們在實際項目中,還要考慮插入排序的性能怎么樣?因為才能更好的選擇適當排序應用到項目中去。

4.1 插入排序的穩定性

再插入排序中,如果存在重復數據的話,前邊的元素再插入的過程永遠在第二個重復數據的前邊,所以插入排序后的重復數據前后順序不變,所以插入排序是穩定排序算法。

4.2 插入排序的空間消耗

我們可以發現,插入排序的移動方式,需要消耗常量級的額外內存空間存儲,也就是代碼中的 temp,所以時間復雜度為 O(1),我們上邊講到,空間復雜度為O(1)的是原地排序算法。

4.3 插入排序的時間效率

插入排序的最好情況就是不需要搬移任何數據,從頭到尾尋找插入數據,每次只比較一次即可,即一組有序數據,所以最好時間復雜度為O(n)。

如果一組數據正好是倒序輸出,那么每次都需要比較移動所有數據,每次移動時 n,n 個數據時間復雜度為O(n2)。

對于插入排序的平均時間復雜度,每次插入都要移動數據,插入 n 次,所以平均時間復雜度為 O(n2)。

5

小結

我們學完了今天的插入排序之后,我們回到最初的面試官問題上。插入排序和冒泡排序哪個更好呢?

我們現在元素移動次數上進行分析,如果一組無序的數據通過冒泡排序排好序之后,它的交換次數是這種數據的逆序度;對于插入排序來說也是一樣的,移動次數上都是原本數據的逆序度。

元素的移動次數是相同的,那我們接下來看看元素的交換次數。從代碼上分析可以明顯看出,冒泡排序的一次交換需要三行代碼,而插入排序的交換卻需要一行,所以總的交換次數冒泡排序大于插入排序。

有小伙伴會問,這兩行的差別有那么大嗎?移動一次,我們可以不計較,如果數據很多,想想下,兩者的效率差別很輕易的就比較出來了。

雖然冒泡排序的時間復雜度和插入排序的時間復雜度是相同的,但是我們實際使用中還是優先選擇插入排序。

對于插入排序還是可以優化的,對了,沒錯,就是希爾排序,我們在這不多分開寫,后期會繼續更新。

如果覺得寫的有幫助,歡迎轉發朋友圈圈哦!

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

    關注

    23

    文章

    4607

    瀏覽量

    92840
  • 排序
    +關注

    關注

    0

    文章

    31

    瀏覽量

    9707

原文標題:動畫:面試官問我插入排序和冒泡排序哪個更牛逼?

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    TPS54120排序和跟蹤

    電子發燒友網站提供《TPS54120排序和跟蹤.pdf》資料免費下載
    發表于 10-10 10:54 ?0次下載
    TPS54120<b class='flag-5'>排序</b>和跟蹤

    LabVIEW調用Aspose.dll實現excel讀寫、圖片插入

    excel。但是公司電腦加密過的excel文件,npoi讀取不了,不知道如何解決。于是放棄。 3、調用Aspose的dll,也免費,也不用裝excel。即使公司電腦加密過的excel文件也能讀寫,非常之
    發表于 06-24 17:01

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

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

    具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40101數據表

    電子發燒友網站提供《具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40101數據表.pdf》資料免費下載
    發表于 04-22 10:26 ?0次下載
    具有先進<b class='flag-5'>排序</b>和輸出裕度的中輸入同步降壓控制器TPS40101數據表

    具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40100數據表

    電子發燒友網站提供《具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40100數據表.pdf》資料免費下載
    發表于 04-17 10:59 ?0次下載
    具有先進<b class='flag-5'>排序</b>和輸出裕度的中輸入同步降壓控制器TPS40100數據表

    3-A、3.3/5V輸入、可調開關穩壓器,具有自動跟蹤TM排序功能PTH04000W數據表

    電子發燒友網站提供《3-A、3.3/5V輸入、可調開關穩壓器,具有自動跟蹤TM排序功能PTH04000W數據表.pdf》資料免費下載
    發表于 04-17 09:32 ?0次下載
    3-A、3.3/5V輸入、可調開關穩壓器,具有自動跟蹤TM<b class='flag-5'>排序</b>功能PTH04000W數據表

    Linux的sort命令介紹

    1.命令簡介以行為單位對文本文件的內容進行排序,將結果顯示在標準輸出,比較原則是從行首字符向后,依次按 ASCII 碼值進行比較,最后按升序輸出。如果 file 參數指定多個文件,那么 sort
    發表于 04-08 07:16

    電路仿真軟件哪個實用

    選擇電路仿真軟件時,哪個實用主要取決于你的具體需求和偏好。不同的軟件在功能、界面設計、操作便利性等方面各有特點。
    的頭像 發表于 03-29 14:40 ?1525次閱讀

    支持 ACPI 的 10 軌電源排序器和監視器UCD9090A數據表

    電子發燒友網站提供《支持 ACPI 的 10 軌電源排序器和監視器UCD9090A數據表.pdf》資料免費下載
    發表于 03-29 09:12 ?0次下載
    支持 ACPI 的 10 軌電源<b class='flag-5'>排序</b>器和監視器UCD9090A數據表

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

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

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

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

    想聽聽48和大對數光纜的排序

    48芯光纜和大對數光纜都是光纜中的一種,它們的區別在于芯數不同。48芯光纜指的是光纜中包含48根光纖,而大對數光纜則是指光纜中芯數超過了48芯。 在實際的光纜應用中,不同芯數的光纜需要進行不同的排序
    的頭像 發表于 03-12 10:44 ?610次閱讀

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

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

    有沒有比Xshell的工具?

    大家都知道,如今市面上流行的遠程連接工具眾多。我本人也一直在用著諸如CRT、Xshell等工具。
    的頭像 發表于 01-25 10:44 ?615次閱讀
    有沒有比Xshell<b class='flag-5'>更</b><b class='flag-5'>牛</b><b class='flag-5'>逼</b>的工具?
    主站蜘蛛池模板: 日本妈妈在线观看中文字幕| 精品日韩二区三区精品视频| 日本高清不卡一区久久精品| 4399的视频BD高清在线观看免费| 久久精品99国产精品日本| 亚洲蜜桃AV色情精品成人| 国产色情短视频在线网站| 午夜在线播放免费人成无| 国产色青青视频在线观看| 野花日本大全免费高清完整版| 久久大香萑太香蕉av| 99久久精品费精品国产| 少妇两个奶头喷出奶水了怎么办| 国产手机在线精品| 97午夜理论片影院在线播放| 三级黄毛片| 久久精品视频在线直播6| av影音先锋影院男人站| 亚洲精品久久久久AV无码林星阑| 麻豆精品人妻一区二区三区蜜桃 | ca88亚洲城娱乐| 呜呜别塞了啊抽插| 久热在线这里只有精品7| 超碰在线线公开免费视频| 亚洲精品久久久WWW游戏好玩| 麻豆国产人妻精品无码AV| 国产精品人妻一区免费看8C0M| 在线精品视频成人网| 偷拍自怕亚洲在线第7页| 两个人看的www免费高清直播| 国产成人无码一区AV在线观看| 医生含着我的奶边摸边做| 婷婷色色狠狠爱| 欧美乱码伦视频免费66网 | 久久综合电影| 国产麻豆剧果冻传媒免费网站| 56prom在线精品国产| 亚洲伊人成综合人影院| 亚欧成人毛片一区二区三区四区| 秋霞伦理电影在线看| 欧美黑人经典片免费观看|