`
ansjsun
  • 浏览: 203065 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

算法实现系列第二章.堆排序

阅读更多

说白了就是二叉树排序..java中hashset中非基本数据类型的对象比较就是用的这个方式...

 

package binarytree;

public class BinaryTree {

	public static void main(String[] args) {
		Node root = null;

		int[] ints = { 123, 1234, 324, 2, 1, 12, 31, 4, 3, 3, 466, 7, 87, 87, 56, 456, 5 };

		root = new Node(ints[0]);
		
		for (int i = 1; i < ints.length; i++) {
			root.add(new Node(ints[i])) ;
		}

		print(root) ;
	}
	
	
	private static void print(Node node){
		if(node.right!=null){
			print(node.right) ;
		}
		System.out.print(node.value+",");
		if(node.left!=null){
			print(node.left) ;
		}
	
	}

	static class Node {

		public Node(int value) {
			this.value = value;
		}

		
		int value;
		Node left;
		Node right;

		/**
		 * 增加一个node
		 * 
		 * @param node
		 */
		public void add(Node node) {
			if (this.value > node.value) {
				if (this.right == null) {
					this.right = node;
				} else {
					this.right.add(node);
				}
			} else {
				if (this.left == null) {
					this.left = node;
				} else {
					this.left.add(node);
				}
			}
		}
	}
}
 其实我感觉不用怎么解释..大的放左面.小的放右面..就是遍历的时候...如果不用递归比较复杂..用了递归也挺饶人的
分享到:
评论

相关推荐

    堆排序算法实现

    本篇文章将基于《算法导论》第六章的内容,深入探讨堆排序的实现原理,并通过具体的C语言代码示例来展示其实现过程。 #### 二、堆排序基础概念 1. **二叉堆**:二叉堆是一种特殊的完全二叉树结构,分为最大堆和...

    C++NOIP算法课程第二章.ppt

    《C++ NOIP算法课程第二章》主要涵盖了贪心算法这一重要的编程策略。贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。在解决特定类型的问题...

    信息学奥赛一本通-教程PPT课件(第五版)算法部分 第二章 数据排序.pdf

    常用的数据结构如集合(Set)可以实现数据的去重,而常见的排序算法如快速排序(Quick Sort)、归并排序(Merge Sort)、堆排序(Heap Sort)等,可以根据实际需要选择使用。 2. 车厢重组问题:此问题涉及到对车厢...

    labuladong的算法小抄 GitHub 68.8k star的硬核算法教程 算法小抄_第四章.pdf

    1. **排序算法**:排序是算法的基础,可能包括快速排序、归并排序、插入排序、选择排序、堆排序等。每种排序算法都有其独特的时间复杂度和空间复杂度,理解它们的工作原理和应用场景至关重要。 2. **查找算法**:...

    《计算机算法设计与分析》算法实现题2-1

    1. **排序算法**:排序是最基本的算法之一,包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。每种排序算法都有其适用场景和性能特点,比如快速排序平均时间复杂度为O(nlogn),而冒泡排序则为O(n^2...

    算法:算法C语言实现 第1-4部分 基础知识、数据结构、排序及搜索

    第二部分“数据结构”(第3~5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构、抽象数据结构、递归和树。第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、...

    算法导论.第三版.英文版.完整非扫描清晰版

    - **堆排序**:利用堆数据结构实现的排序算法,效率较高,平均时间复杂度为O(n log n)。 #### 四、应用与实践 - **实际应用案例**:《算法导论》不仅提供了理论基础,还包含大量实用案例研究,帮助读者理解算法的...

    第一章 算法概述_PDF-2020.06.09.rar

    - **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们各有优缺点,适用于不同的场景。 - **查找算法**:二分查找、哈希查找等,它们在处理大量数据时表现出高效性能。 - **图...

    (陈慧南 第3版)算法设计与分析——课后习题答案(1~8章)

    排序是计算机科学中最常见的问题之一,本章介绍了一系列排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。这些算法各有优劣,根据不同的场景选择合适的排序方法至关重要。 4. **第四章:...

    数据结构讲义(严蔚敏版)(含算法源码).rar

    数据结构讲义(严蔚敏版)(含算法源码) 第0章 复习提示 1 一、 教材内容 1 二、 复习提示 1 1. 经典算法 1 2. 绪论 1 3. 线性表 1 ...8. 堆排序 68 9. 归并排序 71 10. 基数排序 72 11. 各种排序方法比较 73

    算法分析与设计(python)第五章.zip

    《算法分析与设计(Python)第五章》是一个深入探讨算法的资源包,主要针对使用Python编程语言进行算法实现。在这一章中,我们将探讨算法设计的基本原则、分析方法以及Python在算法实现中的应用。以下是对这个主题的...

    数据结构(C语言版) 第八章 排序 知识梳理 + 习题详解1

    本文将深入讲解C语言版《数据结构》第八章中涉及的排序算法,包括归并排序、交换排序(快速排序和冒泡排序)、插入排序、选择排序以及它们之间的比较。 一、归并排序 归并排序是一种分治策略的体现,它将大问题分解...

    Java数据结构和算法(第二版).zip

    全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、递归、进阶排序、二叉树、红黑树、哈希表及图形等知识。附录中则提供了运行专题Applet和例程、相关书籍和问题解答。《Java数据结构和算法》...

    数据结构(C语言版)习题及答案第九章.docx

    - 堆排序是一种基于比较的排序算法,通过构建最大堆或最小堆实现排序。在建立初始堆时,将无序序列构建成一个大顶堆或小顶堆,第一个元素是最大值或最小值。例如题目中的选择题1给出了一个排序码,根据堆的性质,B...

    算法设计与分析:第2章 算法分析基础.ppt

    "算法设计与分析:第2章 算法分析基础" 本章节主要讲解算法分析的基础知识,包括算法复杂度、渐近表示法、递推关系等概念。 2.1 算法复杂度 算法复杂度是指算法执行所需的时间和存储空间。算法设计者需要在算法的...

    算法导论-Introduction.to.Algorithms,.Second.Edition

    通过学习本章内容,读者能够理解并实现堆排序算法。 - **第7章:快速排序** 快速排序是另一种非常有效的排序算法。本章不仅解释了快速排序的核心思想,还讨论了不同情况下的性能表现以及优化策略。 - **第8章:...

    数据结构第九章排序讲稿.zip

    本讲稿主要聚焦于第九章的排序算法,这部分内容对于理解计算机如何高效处理大量数据至关重要。下面我们将深入探讨排序的相关知识点。 一、排序的基本概念 排序是指将一组数据按照特定的顺序排列,常见的排序顺序有...

Global site tag (gtag.js) - Google Analytics