AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

【排序算法】-折半插入排序

來源: 責編: 時間:2023-10-06 19:19:23 329觀看
導讀基本思想先來回顧一下直接插入排序的算法思想,就是在前面已經(jīng)排好序的子序列中尋找一個待插入的位置,然后將待插入元素插入到該位置上。其中尋找插入位置的過程我們是與每一個元素進行比較,相當于順序查找,我們知道順序查

基本思想

先來回顧一下直接插入排序的算法思想,就是在前面已經(jīng)排好序的子序列中尋找一個待插入的位置,然后將待插入元素插入到該位置上。pvI28資訊網(wǎng)——每日最新資訊28at.com

其中尋找插入位置的過程我們是與每一個元素進行比較,相當于順序查找,我們知道順序查找的效率是比較低的,那么有沒有辦法能夠提高查找插入位置的效率呢?pvI28資訊網(wǎng)——每日最新資訊28at.com

很巧的是,前面的序列既然已經(jīng)是有序的了,我們何不采用折半查找來找出插入位置呢?折半查找的前提就是序列有序,采用折半查找法查找插入位置的插入排序算法,我們稱其為折半插入排序。pvI28資訊網(wǎng)——每日最新資訊28at.com

圖解排序過程

折半插入算法非常簡單,前提你得掌握直接插入排序和折半查找的算法,來看一個例子:pvI28資訊網(wǎng)——每日最新資訊28at.com

pvI28資訊網(wǎng)——每日最新資訊28at.com

原序列的前四個元素已經(jīng)有序,則從i位置元素開始進行插入排序,先將i位置元素存入下標0作為哨兵,然后在子序列中尋找待插入位置。pvI28資訊網(wǎng)——每日最新資訊28at.com

這時我們可以采用折半查找法進行查找,定義三個變量lowhighmid,初始low = 1high = i -1,則mid為2pvI28資訊網(wǎng)——每日最新資訊28at.com

讓哨兵位置元素值與mid位置元素值比較,7大于5,所以插入位置應(yīng)該在右半?yún)^(qū),讓low = mid + 1high不變,繼續(xù)折半查找:pvI28資訊網(wǎng)——每日最新資訊28at.com

pvI28資訊網(wǎng)——每日最新資訊28at.com

此時high大于low,查找結(jié)束,則插入位置即為high + 1,這些都是折半查找的內(nèi)容,這里不贅述。pvI28資訊網(wǎng)——每日最新資訊28at.com

找到了插入位置為high + 1,可不能直接將待插入元素值存入high + 1位置,這樣會覆蓋原先的元素值,而應(yīng)該從high + 1位置開始,到i - 1位置為止,將該范圍內(nèi)的所有元素后移,空開high + 1位置,最后將哨兵位置元素插入到high + 1位置即可。pvI28資訊網(wǎng)——每日最新資訊28at.com

代碼實現(xiàn)

先構(gòu)建待排序序列:pvI28資訊網(wǎng)——每日最新資訊28at.com

public class ElemType {    int key;}public class SSTable {    ElemType[] n;    int length;    public SSTable() {        this.length = 11;        this.n = new ElemType[this.length + 1];        for (int i = 1; i <= this.length; i++) {            this.n[i] = new ElemType();        }        this.n[1].key = 3;        this.n[2].key = 5;        this.n[3].key = 10;        this.n[4].key = 16;        this.n[5].key = 7;        this.n[6].key = 32;        this.n[7].key = 83;        this.n[8].key = 23;        this.n[9].key = 54;        this.n[10].key = 29;        this.n[11].key = 96;    }}

折半插入排序算法如下:pvI28資訊網(wǎng)——每日最新資訊28at.com

public class Main {    public static void BInsertSort(SSTable t) {        int i, j, low, high, mid;        //從第二個元素開始插入排序        for (i = 2; i <= t.length; ++i) {            //將待插入元素存入哨兵位置            ElemType temp = t.n[i];            //為low和high賦初值            low = 1;            high = i - 1;            while (low <= high) {                mid = (low + high) / 2;                if (temp.key < t.n[mid].key) {                    high = mid - 1;                } else {                    low = mid + 1;                }            }            //將high + 1到i - 1的元素后移            for (j = i - 1; j >= high + 1; --j) {                t.n[j + 1] = t.n[j];            }            //將哨兵位置元素插入j + 1位置            t.n[j + 1] = temp;        }    }    public static void main(String[] args) {        SSTable st = new SSTable();        BInsertSort(st);    }}

性能分析

可以肯定的是,折半插入排序的效率是要高于直接插入排序的,它所需要的關(guān)鍵碼比較次數(shù)與待排序?qū)ο笮蛄械某跏寂帕袩o關(guān),僅依賴于對象個數(shù)。在插入第i個對象時,需要經(jīng)過「log2i」 + 1次關(guān)鍵碼比較才能確定插入位置。pvI28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-12133-0.html【排序算法】-折半插入排序

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 突破性能邊界,OpenSwoole 引領(lǐng) PHP 網(wǎng)絡(luò)編程新時代!

下一篇: 推薦八個上熱搜的GitHub開源項目

標簽:
  • 熱門焦點
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達到了中國第一,同時還表示小米電視的巨屏風暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • 5月iOS設(shè)備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設(shè)備性能榜的上榜設(shè)備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應(yīng)該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 量化指標是與非:挽救被量化指標扼殺的技術(shù)團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術(shù)總監(jiān)劉新翠在WOT2023大會上的主題分享,更多精彩內(nèi)容及現(xiàn)場PPT,請關(guān)注51CTO技術(shù)棧公眾號,發(fā)消息【W(wǎng)OT2023PPT】即可直接領(lǐng)取
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內(nèi)上線了&ldquo;本地生活&rdquo;入口,位置較深,位于首頁的&ldquo;充值中心&rdquo;內(nèi),目前主要售賣美食相關(guān)的
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業(yè)內(nèi)一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • OPPO K11樣張首曝:千元機影像“卷”得真不錯!

    一直以來,OPPO K系列機型都保持著較為均衡的產(chǎn)品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風扇版本

    據(jù)10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風扇版本。另外,這款顯卡 PCB
Top