alert(mergesort([10,9,8,232,437,6,5435,4,3]));//пример
function mergesort(m){
return m.length <= 1? m: merge(mergesort(m.splice(0,Math.floor(m.length / 2))), mergesort(m.splice(0)))
}
function merge(left,right){
var result = [];
while (left.length > 0 && right.length > 0){
if (left[0] <= right[0]){
result.push(left[0]);
left.splice(0,1);
}
else{
result.push(right[0]);
right.splice(0,1);
}
}
return result.concat(left).concat(right);
}
Ну сам лист нужно сортировать до вывода страницы, потому что так теряется вся логика сортировки.
function sortList(){
document.querySelectorAll(".items").forEach(itemsCont=>{
var items = Array.from(itemsCont.querySelectorAll("li"));
var arr = [];
items.forEach(el=>arr.push(parseInt(el.getAttribute("data-sort"))));
arr = mergesort(arr);
//arr = arr.sort(); //Лучше использовать sort вместо mergesort, работает примерно в 20 раз быстрее, проверено
arr.reverse().forEach(inx=>{
itemsCont.prepend(items.find((el,i,arra)=>{
if(el.getAttribute("data-sort") == inx){
items.splice(i,1);
return el;
}
}));
});
});
}