chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:算法與數(shù)據(jù)結(jié)構(gòu) ? 2019-11-27 16:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫在前邊

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

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

那么今天我們來學(xué)習(xí)一下,插入排序比我們之前講的冒泡排序有什么區(qū)別呢?面試官問我們,我們?nèi)绾位卮鹜暾兀?/p>

思維導(dǎo)圖

1

如何分析一個排序算法?

之前寫的一篇很詳細(xì)的文章。

佩奇學(xué)編程 | 復(fù)雜度分析原來這么簡單

分析排序算法已經(jīng)成為我們衡量一個算法優(yōu)良的重要標(biāo)準(zhǔn),從以下三個方面入手。

1.1 時間效率

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

復(fù)雜度描述的是算法執(zhí)行時間(或占用空間)與數(shù)據(jù)規(guī)模的增長關(guān)系。

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

1.2 空間消耗

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

注意:是額外的內(nèi)存空間,存儲排序數(shù)據(jù)消耗的空間不計。

1.3 穩(wěn)定性

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

2

什么是插入排序?

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

3

如何實(shí)現(xiàn)插入排序?

上述插入排序的概念我們已經(jīng)理解了,那么給你一組數(shù)據(jù),如何來進(jìn)行插入排序呢?

首先我們要將數(shù)據(jù)劃分為兩個區(qū)間,已排序區(qū)間和未排序區(qū)間。

我們從未排序區(qū)間取出數(shù)據(jù)和已排序區(qū)間的數(shù)據(jù)進(jìn)行比較,如果小于已排序區(qū)間的數(shù)據(jù),那我們就交換數(shù)據(jù)。

如果交換到已排序區(qū)間數(shù)據(jù)不在大于插入的數(shù)據(jù),然后將元素插入進(jìn)去。

最后我們看一下總的插入排序動畫和代碼實(shí)現(xiàn)。

4

插入排序的性能

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

4.1 插入排序的穩(wěn)定性

再插入排序中,如果存在重復(fù)數(shù)據(jù)的話,前邊的元素再插入的過程永遠(yuǎn)在第二個重復(fù)數(shù)據(jù)的前邊,所以插入排序后的重復(fù)數(shù)據(jù)前后順序不變,所以插入排序是穩(wěn)定排序算法。

4.2 插入排序的空間消耗

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

4.3 插入排序的時間效率

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

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

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

5

小結(jié)

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

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

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

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

雖然冒泡排序的時間復(fù)雜度和插入排序的時間復(fù)雜度是相同的,但是我們實(shí)際使用中還是優(yōu)先選擇插入排序。

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

如果覺得寫的有幫助,歡迎轉(zhuǎn)發(fā)朋友圈圈哦!

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

    關(guān)注

    23

    文章

    4775

    瀏覽量

    97610
  • 排序
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    9958

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

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    ESP32和STM32哪個容易學(xué)?

    很多人會問,ESP32和STM32到底哪個容易學(xué)?其實(shí)這個問題有點(diǎn)像問自行車和汽車哪個更好開——取決于你想去哪兒,以及你享受的是過程還是結(jié)果。 ESP32更像是一個為你搭好舞臺的智能硬件平臺
    的頭像 發(fā)表于 01-15 15:53 ?62次閱讀
    ESP32和STM32<b class='flag-5'>哪個</b><b class='flag-5'>更</b>容易學(xué)?

    C語言插入排序算法和代碼

    插入排序排序算法的一種,它不改變原有的序列(數(shù)組),而是創(chuàng)建一個新的序列,在新序列上進(jìn)行操作。   這里以從小到大排序為例進(jìn)行講解。   基本思想及舉例說明   插入排序
    發(fā)表于 01-15 06:44

    Linux下怎么讓中文字符串按照拼音排序

    求教 Linux 下怎么讓中文字符串按照拼音排序
    發(fā)表于 01-06 07:40

    光纖線芯都是按照什么顏色排序

    多次有朋友留言問到,光纖熔接顏色如何排序,這個在實(shí)際應(yīng)用中還是比較多的,那么今天我們就不講原理了,直接用圖文簡單明了講光纖熔接色譜,大家可以了解下。 一、常規(guī)排序 1、4芯的排序:藍(lán)、橙、綠、棕
    的頭像 發(fā)表于 12-19 11:02 ?648次閱讀

    C語言的常見算法

    ; } } ``` ### 插入排序 (Insertion Sort) ```c void insertionSort(int arr[], int n) { for (int i = 1; i < n
    發(fā)表于 11-24 08:29

    紅外探測器“歡樂大比拼”:非制冷vs制冷,看看誰”!

    在科技飛速發(fā)展的今天,紅外探測器就像隱藏在暗處的“超級眼睛”,在安消防、工業(yè)檢測、戶外觀測等眾多領(lǐng)域發(fā)揮著不可或缺的作用。而在紅外探測器的大家族中,非制冷和制冷型這兩大“明星選手”常常被人們拿來比較,今天就讓我們來一場歡樂大比拼,看看它們誰”!
    的頭像 發(fā)表于 10-16 10:21 ?804次閱讀
    紅外探測器“歡樂大比拼”:非制冷vs制冷,看看誰<b class='flag-5'>更</b>“<b class='flag-5'>牛</b>”!

    1688 拍立淘接口實(shí)戰(zhàn):從圖像優(yōu)化、工廠排序到供應(yīng)鏈匹配(附可跑代碼)

    深耕B2B電商十余年,親歷1688拍立淘接口20+坑:從圖像預(yù)處理、權(quán)限申請到工廠排序。本文詳解核心參數(shù)、實(shí)戰(zhàn)代碼及多圖驗證、定制方案生成等高級技巧,助你實(shí)現(xiàn)“看圖找廠”精準(zhǔn)匹配,附可運(yùn)行代碼,新手也能少走兩年彎路。
    的頭像 發(fā)表于 10-09 10:39 ?496次閱讀

    使用env工具 生成的mdk工程 中的 頭文件路徑太亂了怎么解決?

    能不能按照相似路徑歸類排序?
    發(fā)表于 09-16 07:46

    國際首創(chuàng)新突破!中國團(tuán)隊以存算一體排序架構(gòu)攻克智能硬件加速難題

    2025 年 6 月 25 日,北京大學(xué)團(tuán)隊在智能計算硬件方面取得領(lǐng)先突破,國際上首次實(shí)現(xiàn)了基于存算一體技術(shù)的高效排序硬件架構(gòu) (A fast and reconfigurable
    的頭像 發(fā)表于 07-02 16:50 ?747次閱讀
    國際首創(chuàng)新突破!中國團(tuán)隊以存算一體<b class='flag-5'>排序</b>架構(gòu)攻克智能硬件加速難題

    Analog Devices Inc. MAX16895 監(jiān)控電路特性/應(yīng)用/功能圖

    Analog Devices MAX16895監(jiān)控電路是小型、低功耗、電壓監(jiān)控電路,具有排序功能。這些器件具有可調(diào)的、低至0.5V的電壓監(jiān)控閾值,并可利用外部電容調(diào)節(jié)延遲時間。這些Analog Devices器件非常適合用于電源排序、復(fù)位
    的頭像 發(fā)表于 06-26 09:34 ?655次閱讀
    Analog Devices Inc. MAX16895 監(jiān)控電路特性/應(yīng)用/功能圖

    低成本電源排序器解決方案

    絕大多數(shù)負(fù)載點(diǎn)DC-DC轉(zhuǎn)換器可以將上一個轉(zhuǎn)換器的電源就緒輸出連接至下一個轉(zhuǎn)換器的使能輸入,實(shí)現(xiàn)上電排序。這種方法只適合比較簡單的設(shè)計,不能滿足多數(shù)現(xiàn)代微處理器和DSP的要求一這類器件要求斷電順序必須與上電順序相反。許多廠商針對這類應(yīng)用推出了可編程排序IC,但器件價格較為
    的頭像 發(fā)表于 05-21 09:55 ?1057次閱讀
    低成本電源<b class='flag-5'>排序</b>器解決方案

    如何區(qū)分usb-typec是插入電腦還是插入其他電源?

    使用的是01的板子,要做成在usb插入電腦時,使用uvc相機(jī), usb插入電源時使用顯示屏播放 如何判斷設(shè)備是插入到電腦還是電源,是通過某個設(shè)備節(jié)點(diǎn)還是什么? 需要先運(yùn)行
    發(fā)表于 04-24 08:23

    UCD9224 2 MHz、2 軌、4 相數(shù)字 PWM 降壓控制器,具有改進(jìn)的排序功能技術(shù)資料

    和管理。 UCD9224 旨在為非隔離式 DC/DC 轉(zhuǎn)換器應(yīng)用提供各種理想的功能,同時通過減少外部電路來最大限度地減少系統(tǒng)組件總數(shù)。該解決方案將多回路管理與排序、裕度、跟蹤和智能相位管理集成在一起,以優(yōu)化整體系統(tǒng)效率。此外,還支持環(huán)路補(bǔ)償和校準(zhǔn),無需添加外部元件。
    的頭像 發(fā)表于 03-28 15:44 ?635次閱讀
    UCD9224 2 MHz、2 軌、4 相數(shù)字 PWM 降壓控制器,具有改進(jìn)的<b class='flag-5'>排序</b>功能技術(shù)資料

    CS1237數(shù)據(jù)跳動幫忙看看是什么原因造成的?

    公司項目, 用CS1237 稱重 有兩個問題: 第一情況:輸出速度只能選擇00和01 大于01.寫入和讀取就一致 所以項目現(xiàn)在用的是0x1C 第二:有傳感器插入,但是是沒有物品的時候 連續(xù)讀10次
    發(fā)表于 02-17 10:43

    插入式電磁流量計的應(yīng)用范圍要知道

    插入式電磁流量計的結(jié)構(gòu)比較簡單,沒有可活動部件,測量數(shù)值比較準(zhǔn)確,比其他安裝形式的電磁流量計體積小便于安裝。且插入式電磁流量計的應(yīng)用范圍一點(diǎn)不比管段式的少,接下來我們詳細(xì)說說插入式電磁流量計
    的頭像 發(fā)表于 02-07 15:35 ?1021次閱讀
    <b class='flag-5'>插入</b>式電磁流量計的應(yīng)用范圍要知道