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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

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

基本思想

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

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

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

圖解排序過(guò)程

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

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

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

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

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

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

7小于10,則插入位置應(yīng)該在左半?yún)^(qū),讓high = mid - 1low不變:eLa28資訊網(wǎng)——每日最新資訊28at.com


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

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

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

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

代碼實(shí)現(xiàn)

先構(gòu)建待排序序列:eLa28資訊網(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;    }}

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

public class Main {    public static void BInsertSort(SSTable t) {        int i, j, low, high, mid;        //從第二個(gè)元素開(kāi)始插入排序        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(wú)關(guān),僅依賴(lài)于對(duì)象個(gè)數(shù)。在插入第i個(gè)對(duì)象時(shí),需要經(jīng)過(guò)「log2i」 + 1次關(guān)鍵碼比較才能確定插入位置。eLa28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

下一篇: 推薦八個(gè)上熱搜的GitHub開(kāi)源項(xiàng)目

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 小米降噪藍(lán)牙耳機(jī)Necklace分享:聽(tīng)一首歌 讀懂一個(gè)故事

    在今天下午的小米Civi 2新品發(fā)布會(huì)上,小米還帶來(lái)了一款新的降噪藍(lán)牙耳機(jī)Necklace,我們也在發(fā)布結(jié)束的第一時(shí)間給大家?guī)?lái)這款耳機(jī)的簡(jiǎn)單分享。現(xiàn)在大家能見(jiàn)到最多的藍(lán)牙耳機(jī)
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專(zhuān)為家庭請(qǐng)假懶人而生的石頭科技在近日又帶來(lái)了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個(gè)產(chǎn)品名上就不難看出,這次石頭推出的并不是常見(jiàn)的掃地機(jī)器
  • 6月安卓手機(jī)好評(píng)榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性?xún)r(jià)比榜之后,我們來(lái)看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來(lái)源安兔兔評(píng)測(cè),收集時(shí)間2023年6月1日至6月30日,僅限國(guó)內(nèi)市場(chǎng)。第一名:魅族20 Pro好評(píng)率:95%5月份的時(shí)候魅族20 Pro就是
  • 消息稱(chēng)迪士尼要拍真人版《魔發(fā)奇緣》:女主可能也找黑人演員

    8月5日消息,迪士尼確實(shí)有點(diǎn)忙,忙著將不少動(dòng)畫(huà)改成真人版,繼《美人魚(yú)》后,真人版《白雪公主》、《魔發(fā)奇緣》也在路上了。據(jù)外媒消息稱(chēng),迪士尼將打造真人版
  • K6:面向開(kāi)發(fā)人員的現(xiàn)代負(fù)載測(cè)試工具

    K6 是一個(gè)開(kāi)源負(fù)載測(cè)試工具,可以輕松編寫(xiě)、運(yùn)行和分析性能測(cè)試。它建立在 Go 和 JavaScript 之上,它被設(shè)計(jì)為功能強(qiáng)大、可擴(kuò)展且易于使用。k6 可用于測(cè)試各種應(yīng)用程序,包括 Web
  • 一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

    場(chǎng)景碼猿慢病云管理系統(tǒng)中其實(shí)高并發(fā)的場(chǎng)景不是很多,沒(méi)有必要每個(gè)接口都去考慮并發(fā)高的場(chǎng)景,比如添加住院患者的這個(gè)接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:圖片上述代碼有
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級(jí)

    來(lái)源 | 伯虎財(cái)經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報(bào)道,拼多多旗下跨境電商平臺(tái)Temu正對(duì)競(jìng)爭(zhēng)對(duì)手SHEIN提起新訴訟,訴狀稱(chēng)Shein&ldquo;利用市場(chǎng)支配力量強(qiáng)迫服裝廠(chǎng)商與之簽訂獨(dú)家
  • ESG的面子與里子

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是&ldquo;環(huán)境保
  • 由于成本持續(xù)增加,筆記本產(chǎn)品價(jià)格預(yù)計(jì)將明顯上漲

    根據(jù)知情人士透露,由于材料、物流等成本持續(xù)增加,筆記本產(chǎn)品價(jià)格預(yù)計(jì)將在2021年下半年有明顯上漲。進(jìn)入6月下旬以來(lái),全球半導(dǎo)體芯片缺貨情況加劇,顯卡、處理器
Top