Мы также можем положиться на функцию браузера calc () в соответствии с: https://caniuse.com/#search=calc ()
$isize: 16px;
$psize: calc(#{$isize} - 2px);
input {
font-size: $isize;
}
p {
font-size: $psize;
}
Да. Начиная с крайнего левого положения, мы помещаем элемент там в его правильное положение i путем свопинга его с (другим) неуместным элементом в том положении i. Это - то, где нам нужен O (1) дополнительное пространство. Мы имеем в наличии пар свопинга элементов, пока элемент в этом положении не корректен. Только затем сделайте мы продолжаем двигаться к следующему положению и делаем то же самое.
Пример:
[5 3 2 1 0 4] начальное состояние
[4 3 2 1 0 5] подкачал (5,4), 5 находится теперь в правильном положении, но 4 является все еще неправильным
[0 3 2 1 4 5] подкачал (4,0), теперь и 4 и 0 находятся в правильных положениях, движении к следующей позиции
[0 1 2 3 4 5] подкачал (3,1), теперь 1 и 3 находятся оба в правильных положениях, движении к следующей позиции
[0 1 2 3 4 5] все элементы находятся в правильных положениях, конце.
Примечание:
Так как каждая операция подкачки помещает по крайней мере один (двух) элементы в правильном положении, нам нужны не больше, чем N такие подкачки в целом.
Решение Zach очень хорошо.
Однако, я задавался вопросом, почему существует любая потребность отсортировать. Если у Вас есть перестановка индексов, используйте значения в качестве указателя на старый массив.
Это может избавить от необходимости сортировать массив во-первых. Это не решение, которое может использоваться во всех случаях, но оно будет хорошо работать в большинстве случаев.
Например:
a = [45,89,22,31,23,76];
b = [5,3,2,1,0,4]
Теперь, если Вы хотите сократить через значения в a, можно сделать что-то как (псевдокод):
for i=0 to 4
{
process(a[i]);
}
Если Вы хотите циклично выполниться через значения в новом порядке, сделайте:
for i=0 to 4
{
process(a[b[i]]);
}
Как отмечалось ранее, этот soluion может быть достаточным во многих случаях, но не может в некоторых других случаях. Для других случаев можно использовать решение Zach. Но для случаев, где это решение может использоваться, это лучше, потому что никакая сортировка не необходима вообще.