얼마 전, 매우 마법의 문제는 내 동료의 코드에 들어 섰습니다. 거친 프로세스는 객체로 구성된 배열을 정렬하는 것입니다. 이것은 매우 간단한 문제입니다. 문제는 이번에 정렬을 두 번 사용하고 먼저 A의 속성에 따라 정렬 한 다음 B의 값에 따라 정렬한다는 것입니다. 문제는 두 번째 정렬에 있습니다.
첫 번째 정렬에서 배열은 a의 속성에 따라 크게 정렬되었으며, 원래 배열의 순서를 이동할 필요가 없으며 (일반적으로 방법에서 0 또는 -1로 작성) B의 요소를 전면에 1과 동일하게하는 것을 고려합니다. 그러나 이것은 언어로 선택한 정렬 알고리즘과 관련이 있습니다.
아래는 stackoverflow에서 발견 된 예입니다
코드 사본은 다음과 같습니다.
var arraytosort = [
{이름 : 'A', 강도 : 1}, {이름 : 'B', 강도 : 1}, {이름 : 'c', 강도 : 1}, {이름 : 'd', 강도 : 1},
{이름 : 'e', 강도 : 1}, {이름 : 'f', 강도 : 1}, {이름 : 'g', 강도 : 1}, {이름 : 'h', 강도 : 1},
{이름 : 'i', 강도 : 1}, {이름 : 'j', 강도 : 1}, {이름 : 'k', 강도 : 1}, {이름 : 'l', 강도 : 1},
{이름 : 'M', 강도 : 1}, {name : 'n', thint
{이름 : 'Q', 강도 : 1}, {이름 : 'r', 강도 : 1}, {이름 : 's', 강도 : 1}, {이름 : 't', 강도 : 1}
];
ArrayToSort.sort (function (a, b) {
반환 b.strength -A.strength;
});
arraytosort.foreach (function (element) {
Console.log (Element.Name);
});
우리는 마지막 요소의 값이 여전히 a에서 t로 생각하지만 실제 결과는 정렬 알고리즘이 원래 배열의 순서, 즉 불안정하지 않기 때문입니다.
그런 다음이 상황을 피해야합니다. 동료의 예에서 두 종류의 논리를 여러 종류로 나누어야합니다.