最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)堆的操作方法(建堆,插入,刪除)

 更新時(shí)間:2017年12月04日 09:55:16   作者:idealemail  
下面小編就為大家分享一篇java實(shí)現(xiàn)堆的操作方法(建堆,插入,刪除),具有很好的參考價(jià)值,希望對(duì)大家有所幫助

如下所示:

import java.util.Arrays;

//小頂堆的代碼實(shí)現(xiàn)

public class Heap {
	// 向下調(diào)整,頂端的大值往下調(diào),主要用于刪除和建堆,i表示要調(diào)整的節(jié)點(diǎn)索引,n表示堆的最有一個(gè)元素索引
	// 刪除時(shí)候,i是0,建堆時(shí)候i從最后一個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)依次往前調(diào)整
	public static void fixDown(int[] data, int i, int n) {
		int num = data[i];
		int son = i * 2 + 1;
		while (son <= n) {
			if (son + 1 <= n && data[son + 1] < data[son])
				son++;
			if (num < data[son])
				break;
			data[i] = data[son];
			i = son;
			son = i * 2 + 1;
		}
		data[i] = num;
	}

	// 向上調(diào)整,小值往上走,用于增加,往上調(diào)整不需要制定最上面的索引,肯定是0
	public static void fixUp(int[] data, int n) {
		int num = data[n];
		int father = (n - 1) / 2;
		// data[father] > num是進(jìn)入循環(huán)的基本條件,father減到0就不會(huì)減少了
		// 當(dāng)n等于0時(shí),father=0;進(jìn)入死循環(huán),所以當(dāng)n==0時(shí),需要跳出循環(huán)
		while (data[father] > num && n != 0) {
			data[n] = data[father];
			n = father;
			father = (n - 1) / 2;
		}
		data[n] = num;
	}

	// 刪除,n表示堆的最后一個(gè)元素的索引
	public static void delete(int[] data, int n) {
		data[0] = data[n];
		data[n] = -1;
		fixDown(data, 0, n - 1);
	}

	// 增加,i表示要增加的數(shù)字,n表示增加位置的索引,是堆的最后一個(gè)元素
	public static void insert(int[] data, int num, int n) {
		data[n] = num;
		fixUp(data, n);
	}

	// 建堆,n表示要建堆的最后一個(gè)元素的索引
	public static void creat(int[] data, int n) {
		for (int i = (n - 1) / 2; i >= 0; i--)
			fixDown(data, i, n);
	}

	public static void main(String[] args) {
		int[] data = { 15, 13, 1, 5, 20, 12, 8, 9, 11 };
		// 測(cè)試建堆
		creat(data, data.length - 1);
		System.out.println(Arrays.toString(data));
		// 測(cè)試刪除
		delete(data, data.length - 1);
		delete(data, data.length - 2);
		System.out.println(Arrays.toString(data));
		// 測(cè)試插入
		insert(data, 3, data.length - 2);
		System.out.println(Arrays.toString(data));

	}

}

以上這篇java實(shí)現(xiàn)堆的操作方法(建堆,插入,刪除)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 完美解決idea創(chuàng)建文件時(shí),文件不分級(jí)展示的情況

    完美解決idea創(chuàng)建文件時(shí),文件不分級(jí)展示的情況

    這篇文章主要介紹了完美解決idea創(chuàng)建文件時(shí),文件不分級(jí)展示的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • java并發(fā)編程之深入理解Synchronized的使用

    java并發(fā)編程之深入理解Synchronized的使用

    文詳細(xì)講述了線程、進(jìn)程的關(guān)系及在操作系統(tǒng)中的表現(xiàn),這是多線程學(xué)習(xí)必須了解的基礎(chǔ)。本文將接著講一下Java線程同步中的一個(gè)重要的概念synchronized,希望能夠給你有所幫助
    2021-06-06
  • mybatisplus使用xml的示例詳解

    mybatisplus使用xml的示例詳解

    這篇文章主要介紹了mybatisplus使用xml,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • maven項(xiàng)目后出現(xiàn)‘parent.relativePath’ of POM錯(cuò)誤時(shí)的解決方法

    maven項(xiàng)目后出現(xiàn)‘parent.relativePath’ of POM錯(cuò)誤時(shí)的解決方法

    在Springboot項(xiàng)目啟動(dòng)時(shí),項(xiàng)目報(bào)錯(cuò)‘parent.relativePath’ of POM問(wèn)題,項(xiàng)目無(wú)法正常啟動(dòng),本文就來(lái)介紹一下解決方法,感興趣的可以了解一下
    2023-10-10
  • 詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程

    詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程

    這篇文章主要介紹了詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • mybaties?plus?selectMaps和selectList的區(qū)別說(shuō)明

    mybaties?plus?selectMaps和selectList的區(qū)別說(shuō)明

    這篇文章主要介紹了mybaties?plus?selectMaps和selectList的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Springboot整合Dubbo+Nacos實(shí)現(xiàn)RPC調(diào)用的示例代碼

    Springboot整合Dubbo+Nacos實(shí)現(xiàn)RPC調(diào)用的示例代碼

    隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來(lái)越多的企業(yè)和開發(fā)者開始關(guān)注微服務(wù)架構(gòu),Nacos是阿里巴巴開源的一個(gè)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái),本文講解如何將Spring Boot與Dubbo和Nacos整合,實(shí)現(xiàn)RPC調(diào)用,需要的朋友可以參考下
    2024-02-02
  • 詳解Java中clone的寫法

    詳解Java中clone的寫法

    這篇文章主要介紹了Java中clone的寫法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Triple協(xié)議支持Java異?;貍髟O(shè)計(jì)實(shí)現(xiàn)詳解

    Triple協(xié)議支持Java異?;貍髟O(shè)計(jì)實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Triple協(xié)議支持Java異?;貍髟O(shè)計(jì)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Nacos服務(wù)注冊(cè)客戶端服務(wù)端原理分析

    Nacos服務(wù)注冊(cè)客戶端服務(wù)端原理分析

    這篇文章主要為大家介紹了Nacos服務(wù)注冊(cè)客戶端服務(wù)端原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

江口县| 康马县| 杭州市| 无极县| 哈尔滨市| 蒲江县| 玉山县| 远安县| 柳林县| 贡嘎县| 黑山县| 长丰县| 曲周县| 滨海县| 中江县| 鹤山市| 革吉县| 镇江市| 昌邑市| 库车县| 同江市| 湖北省| 增城市| 阳信县| 惠东县| 武夷山市| 平乐县| 闽侯县| 湖北省| 阜平县| 遵义县| 南乐县| 广灵县| 平昌县| 莱州市| 漳州市| 怀仁县| 佛坪县| 抚远县| 咸宁市| 宣汉县|