java实现对树形结构(文件夹式)数据数组进行排序

Folder有如下属性:id,pid(父节点),sequence(同级节点排序依据)
有如下数据:
F1 (1,0,1)
F2 (2,0,2)
F3 (3,4,1)
F4 (4,2,1)
F5 (5,1,1)
F6 (6,1,2)
F7 (7,6,1)
F8 (8,0,3)
树形结构为:
(1,0,1) F1
(5,1,1) F5

(6,1,2) F6

(7,6,1) F7

(2,0,2) F2
(4,2,1) F4

(3,4,1) F3
(8,0,3) F8
怎么实现对以上数据以sequence大小为依据进行排序,实现按树形结构输出
F1、F5、F6、F7、F2、F4、F3、F8

第1个回答  2015-05-14
这个问题本质上就是个数据结构的问题,所谓排序和查找效率依赖的是算法和数据结构的配合,你现在定下了链表(没有具体说明的话,这里应该指的是单向链表吧)、数组和二叉树,这几个之中,那排序和查找的数据就看用什么算法和相应的数据结构配合了~~~

排序算法中,快速排序是最快的,比较适合用链表来处理,但是链表的查找是比较慢的(双向链表的话可以加快查找速度)。
数组排序会比较慢,不是算法的问题,而是数组的调整因为需要位移,但是数组一旦排号顺序后,查找是很快的——折半查找。
二叉数较为平局,排序可以采用堆排序,查找可以建二叉排序树来找(用B+或B-树的话可以更快)。

个人看法,不一定对,欢迎拍砖,具体代码知道算法了就自己上网找吧。
相似回答