二叉树排序(java)
package ding1; //二叉树排序import java.util.Scanner; //数组用的是位序!!class A{ void exch(int a[],int i,int j) { //交换a[i]和a[j]的值int temp;temp=a[i];a[i]=a[j];a[j]=temp;}void swim(int a[],int k) { //上浮第k位置的元素 至合适的位置(树由上到下降序)while(k>1 && a[k/2]<a[k]) {exch(a,k/2,k);k=k / 2;}}void sink(int a[],int k,int N) { //下沉第k位置元素,优先与左右孩子中最大的互换位置(树由上到下降序)while(2*k <= N) {int j=2*k;if(j<N && a[j]<a[j+1]) j++;if(!(a[k]<a[j])) break;exch(a,k,j);k=j;}}
}public class ceshi{ public static void main(String[] args) {A a = new A();Scanner reader = new Scanner(System.in);int x[]= new int[10];for(int i=0;i<10;i++) { //注:x[0]不用!!填“0”占位置。x[i]=reader.nextInt();}int N = x.length - 1; //去除x[0]这个元素后的数组长度int N1 = N;for(int k=N/2;k>=1;k--) { //使二叉树有序(由上到下降序)a.sink(x,k,N);}while(N>1) { //由上到下升序排序a.exch(x,1,N--);a.sink(x,1,N);}for(int i=1;i<=N1;i++) {System.out.println(x[i]);}}
}
测试结果:
二叉树排序(java)相关推荐
- 二叉树排序-Java版本
利用二叉树结构以及遍历方式可以实现基于二叉树的元素排序处理. 首先根据插入元素的大小与根节点大小的比较来构建一颗完整的树. 在构建好二叉树之后,并没有继续排序,所以我们需要使用一个中序遍历,因为中序遍 ...
- Java 实现二叉树排序和查找
啥都不说了,直接上代码 package com.inter.structure;import java.util.Random;/*** 使用Java实现二叉树排序 二叉树只有一个根节点* * @au ...
- java 文件遍历排序_Java的二叉树排序以及遍历文件展示文本格式的文件树
Java二叉树排序算法排序二叉树的描述也是一个递归的描述, 所以排序二叉树的构造自然也用递归的: 排序二叉树的3个特征: 1:当前node的所有左孩子的值都小于当前node的值: 2:当前node的所 ...
- arraylist从大到小排序_java基础算法之二叉树排序(递归)
一.二叉树介绍 在计算机科学中,二叉树是每个结点最多有两个子树的树结构.二叉树由各种节点组成,如下图所示: 每个节点都可以有左子节点,右子节点 每一个节点都有一个值 二叉树遍历: 二叉树的遍历分左序, ...
- 八大排序:Java实现八大排序及算法复杂度分析
目录 QUESTION:八大排序:Java实现八大排序及算法复杂度分析 ANSWER: 一:冒泡排序 1.算法分析 2.时间复杂度分析 3.代码 二:选择排序 1.算法分析 2.时间复杂度分析 3.代 ...
- java 二叉树特点_二叉树的Java实现及特点总结
二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 我们先介绍一些关于二叉树的概念名词. 二叉树: ...
- 二叉树 排序二叉树-可以通过中序遍历得到排序的数据 二叉排序树时间复杂度O(logn),...
二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 虽然二叉排序树的最坏效率是O(n),但它支持动 ...
- php二叉树 排列,PHP 如何实现用户二叉树排序需求
用户二叉树排序需求 用户注册,输入以下注册信息: - 电子邮箱 - 密码 - 确认密码 - 推荐人ID(此ID可以在数据库中手动增加一个) 每注册进一个新用户,该用户就进入到排序中 排序规则 新增用户 ...
- 算法练习5---快速排序Java版
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成 ...
最新文章
- Nature重大突破!将皮肤细胞直接转化成感光细胞让小鼠重见光明!
- 无锡易保Java面试笔试_易保面试题 - willim - BlogJava
- error LNK2001: unresolved external symbol _WinMain@16
- LeetCode 500. 键盘行
- 【VB.NET】VB.NET数据库技术问题的解答
- python中while的用法_Python学习笔记之While循环用法分析
- C++类成员函数的传参问题
- 视觉SLAM入门十四讲
- 番外篇:常见安全漏洞及解决方案
- java中如何表达sin_在Java中使用“sincos”
- 10款可视化大屏特效,酷炫又内涵!
- .net 导出excel_C# 导出 Excel 的 6 种简单方法!你会几种?
- HTML + CSS + JS做一个绘画分享网站[开源项目]
- 广州电信新推出的实惠套餐(目前更新时间3月27日,非官方口径,不正确的地方请指出)...
- Java设计模式之工厂模式篇 (转)
- 浅谈LED和OLED技术区别
- 如何建一个精品的互性性好的网站?
- 爬取一条微博的所有转发链接
- 学习C++ - 向量(vector)!你今天努力了吗?
- C# SolidWorks 二次开发 API---提高草图绘制效率