二叉树极速排序算法-Java版
来源:互联网 发布:安卓编程文件管理器 编辑:程序博客网 时间:2024/05/22 15:34
相比选择排序、插入排序、冒泡排序、希尔排序、堆排序、快速排序等算法,二叉排序既稳定有快速,特别是在数据庞大排序的时候,更能凸显它的优势。主要利用二叉树的特性进行排序,以随便一个数作为头部,然后遍历一遍所有的数据,当小于此值且有左分支时,继续下一个左分支作比较,直到当小于此值且该支没有左分支时添加一左分支,同理,当大于此值且有右分支时,继续下一个右分支作比较,直到当大于此值且没有右分支时添加一右分支,最后形成一个(左-中-右)的取值数状排序,具体实现如下:
public static void tree(int[] data){long startTime,endTime;int size = data.length;int start = 0;int[][] treeCur = new int[size][4];int index;startTime = System.nanoTime();treeCur[start][1] = data[start];//顶部while(start < size){index = 0;while(index < start){if(treeCur[index][1]>data[start]){//小于if(treeCur[index][0] == 0) {treeCur[start][1] = data[start];treeCur[index][0]=start;break;}else index = treeCur[index][0];}else if(treeCur[index][1]<data[start]){//大于if(treeCur[index][2] == 0) {treeCur[start][1] = data[start];treeCur[index][2]=start;break;}else index = treeCur[index][2];}else{//等于treeCur[index][3]++;break;}}start ++ ;}endTime = System.nanoTime();jiexi(treeCur,0,data,0);//获取排序的数据到data数组中System.out.print("排序后是:");for(int va:data){System.out.print(va+" ");}System.out.println();System.out.println("排序使用时间:"+(endTime-startTime)+" ns");}public static int jiexi(int[][] treeCur,int cur,int[] data,int index){if(treeCur[cur][0] != 0)index = jiexi(treeCur,treeCur[cur][0],data,index);while(treeCur[cur][3]>=0){data[index] = treeCur[cur][1];index++;treeCur[cur][3]--;}if(treeCur[cur][2] != 0)index = jiexi(treeCur,treeCur[cur][2],data,index);return index;}
1 0
- 二叉树极速排序算法-Java版
- java二叉树排序算法
- java二叉树排序算法
- java排序算法_009二叉查找树
- JAVA排序算法实现代码-二叉树排序
- 二叉树排序算法
- BinarySort(二叉排序算法)
- 排序算法-二叉树排序
- java中利用二叉树算法进行排序
- 排序算法 java 版
- 排序算法java版
- 排序算法-java版
- 排序二叉树的实现 Java版
- 排序二叉树JAVA版实现
- 二叉树中的排序树,Java版
- java-二叉树排序
- java 二叉树排序
- Java 二叉树排序
- Google推荐的图片加载库Glide介绍
- vue Render函数
- maven install中依赖关系打包failed
- php版本号排序
- Uncaught (in promise) TypeError: Super expression must either be null or a function
- 二叉树极速排序算法-Java版
- solr中安装IKAnalyzer时 There exists no core with name “collection1“
- CentOS 7 环境下安装Maven
- 微信小程序,学习笔记(一)框架,视图层
- Ionic+AngularJs+Cordova环境搭建
- html radio样式美化
- redis相關
- jf框架中json.tld是什么?为什么不用更为简单的json-taglib.jar方式?
- TypeScript学习笔记之变量声明