Стабильна ли сортировка массива JavaScript?

JSON ответ в JavaScript Программирование и разработка

Javascript Array Sort стабилен: начиная с версии 10 (или ECMAScript 2019), спецификация требует, чтобы Array.prototype.sort был стабильным. В javascript стабильная сортировка — это если объекты массива с парой (ключ, значение) имеют одинаковые ключи, которые появляются в том же порядке в отсортированном выводе, что и во входном наборе данных. Поэтому он надежен для сортировки пар ключ-значение.

Метод JavaScript Array sort() используется для сортировки массива в указанном порядке в соответствии с функцией compare(). Если выбран метод takeout, массив сортируется по возрастанию.

До версии 10 (или ECMA 2019) стабильность сортировки не гарантировалась, т. е. иногда она показывает стабильность, а иногда нет. Следовательно, он дает неправильный результат для данного ввода.

Синтаксис:

Array.sort()

Пример 1: В этом примере мы показали, какой была сортировка до версии 10.

Javascript

const students = [
    { name: "Kavya", Age: 21 },
    { name: "Mansi", Age: 22 },
    { name: "Riya", Age: 20 },
    { name: "Sanya", Age: 20 },
];
 
// Compare function
students.sort((first, second) => (first.Age - second.Age));
console.log(students);

Выход:

[
  { name: 'Sanya', Age: 20 }, / Original order not maintained
  { name: 'Riya', Age: 20 }, // Original order not maintained
  { name: 'Kavya', Age: 21 },
  { name: 'Mansi', Age: 22 }
]

Этот пример меняет свой порядок, потому что стабильность в более ранней версии ненадежна. Поэтому он не стабилен.

Пример 2: В этом примере метод sort() показывает стабильность при сортировке.

Javascript

const students = [
    { name: "Kavya", Age: 21 },
    { name: "Mansi", Age: 22 },
    { name: "Riya", Age: 20 },
    { name: "Sanya", Age: 20 },
];
 
// Compare function
students.sort((first, second) => (first.Age - second.Age));
console.log(students);

Выход:

[
  { name: 'Riya', Age: 20 },
  { name: 'Sanya', Age: 20 },
  { name: 'Kavya', Age: 21 },
  { name: 'Mansi', Age: 22 }
]

Приведенный выше пример уже отсортирован по имени, но когда мы сортируем возраст с помощью функции сравнения, вывод не меняет порядок имен («Рия» и «Саня»). Это показывает стабильность в сортировке.

Пример 3: В этом примере показана стабильность при сортировке.

Javascript

const fruits = [
    { name: "Apple", cost: 100 },
    { name: "Banana", cost: 60 },
    { name: "Pineapple", cost: 200 },
    { name: "Pears", cost: 200 },
    { name: "Pomegranate", cost: 200 },
    { name: "Strawberry", cost: 150 },
];
 
fruits.sort((a, b) => a.cost - b.cost);
console.log(fruits);

Выход:

 [
    { name: 'Banana', cost: 60 },
    { name: 'Apple', cost: 100 },
    { name: 'Strawberry', cost: 150 },
    { name: 'Pineapple', cost: 200 }, // Original order maintained
    { name: 'Pears', cost: 200 },  // Original order maintained
    { name: 'Pomegranate', cost: 200 } // Original order maintained
]

В приведенном выше примере имя уже отсортировано по алфавиту, но когда мы сортируем с помощью функции сравнения, порядок имен не меняется, что означает, что сортировка в javascript стабильна.

Читайте также:  Java Deque
Оцените статью
bestprogrammer.ru
Добавить комментарий