節點排序 2

2021-09-06 02:25:02 字數 2151 閱讀 4689

對支援sourceindex的html文件的節點重排,使用jk提供的思路,速度至少比單純使用nodes.sort(function(a,b))這種方式快兩倍:

//靈感來自

//var hasduplicate = false;

var sortby = function(nodes)

array.sort(function(a,b));

while( i )

result[--i] = array[i]._;

return result;

}

但標準瀏覽器不支援這屬性,在ie中,xml文件也沒有此屬性,這時就需要跟據節點的parentnode與nextsibling,但如果單單是兩兩比較,速度是提公升不了的。因此我們就轉而比較最近公共祖先的孩子們的順序了。這時,演算法的威力就體現出來了。這是第一版,根據某一朋友提供的lca搞出來的東西,當然大體思路還是歸功於jk大神。但實際效果不如意,比jquery的那個sortorder慢,估計問題出在求lca上。

//根據這裡jk提供的思路

//var tick = 0, hasduplicate = false;

var rage = , i = 0,

attr = "data-find"+(++tick),

length = nodes.length,

node,

parent,

counter = 0,

uuid;

while(node = nodes[i++])

uuid = parent.getattribute(attr);

if(!uuid);

}else

parent = parent.parentnode;

}} for(var i in hash)

} },

getlist : function(nodes,parent)

list.unshift(node);

node = node.parentnode;

} return list;

}, getlists : function()

} return lists;

}, sortlist : function(a,b)

}return 1}}

return a.length-b.length;

},uniquesort : function(nodes)

if(result.length !== length)

}return result;

}}

下面是第二版,經過改進,終於比jquery的那個快上三倍(測試物件為擁有260多個節點的文件)

var hasduplicate = false;

var rage =

list.unshift(node);

node = node.parentnode;

}return list;

},getlists : function(nodes)

return lists;

},slicelist : function(lists,num)

}return result;

},sortlist : function(a,b)

}return 1}}

return a.length-b.length;

},uniquesort : function(nodes));

var depth = lists[0].length, length = lists.length, parent, cut, ii = 0;

for(var i =0; i < depth; i++)

}if(cut)else

}var lca = lists[0][ii-1];

lists = rage.slicelist(lists,ii);

lists.sort(rage.sortlist);

var list, i = 0, result = ;

while(list = lists[i++])

if(result.length !== length)

}return result;

}}

zTree節點排序 jsTree節點排序

數字字母混合排序可以參考 正文 專案中遇到了這個問題,網上也沒找到比較清晰的答案,索性提供乙個方案吧。原理 將整個樹形外掛程式的資料來源進行排序,外掛程式在構造ui時,自然也是按照順序來排列的,目前這種思路適用於 ztree 和 jstree 類庫 當然jstree本身也有自己的排序外掛程式 其他類...

排序 2 選擇排序

工具方法類 package mydatastructrueadndalgorith.three.arrsort 陣列為模板排序演算法中的一些公用的模板方法 建立人 曹雪坤 version 1.0.0 public class example 遍歷陣列 public static void show ...

排序 2 希爾排序

我們來談一談希爾排序 希爾排序和直接插入排序一樣屬於插入排序,但是由於分組的存在,相等的元素可能分在不同組,導致他們的次序可能發生變化,所以它是不穩定的排序。除此之外由於它移動次數較少所以它比直接插入排序時間效能優越,效率更高。時間複雜度 最好情況 o n 最壞情況 o n2 平均情況 o n1.3...