對支援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...