сам похож этот ключевое слово в Java. Это - ссылка на текущий экземпляр объекта. Если бы Ваш типовой кодекс выполняет операцию на текущем объекте, то Вам, вероятно, была бы нужна функция без сам method_name спецификатор.
Можно получить стабильную сортировку из нестабильной функции сортировки.
Перед сортировкой вы получите положение всех элементов. В вашем состоянии сортировки, если оба элемента равны, то вы сортируете по позиции.
Тада! У вас есть конюшня.
Я написал статью об этом в моем блоге, если вы хотите узнать больше об этой технике и как его реализовать: http://blog.vjeux.com/2010/javascript/javascript-sorting- table.html
Поскольку вы ищете что-то стабильное, вам подойдет сортировка слиянием.
http://www.stoimen.com/blog/2010/07/02/friday-algorithms-javascript-merge-sort/
Код можно найти на указанном выше веб-сайте:
function mergeSort(arr)
{
if (arr.length < 2)
return arr;
var middle = parseInt(arr.length / 2);
var left = arr.slice(0, middle);
var right = arr.slice(middle, arr.length);
return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right)
{
var result = [];
while (left.length && right.length) {
if (left[0] <= right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
while (left.length)
result.push(left.shift());
while (right.length)
result.push(right.shift());
return result;
}
РЕДАКТИРОВАТЬ:
Согласно этому сообщению , похоже, что Array.Sort в некоторых реализациях использует сортировку слиянием.