$arr = [1,2,3]
srand(date('W'));
shuffle($array);
srand();
И никаких тебе сохранений промежуточных состояний
Плавная сортировка вертикальных элементов.
Главной задачей было добиться максимальной быстрой скорости сортировки и отрисовки, без лишних действий. Данный плагин предназначен для узкого списка задач, по этому на супер функциональность в нём можете не рассчитывать.
Так же есть AssetBundle для Yii2 SmoothSortAsset
Иногда требуется, чтобы определённые ключи в массиве оказались в начале в определённом порядке.
$data = [
'orange' => 'orange',
'apple' => 'tasty',
'carpet' => 'old',
'car' => 'fast',
];
$result = orderByKeys($data, ['car', 'carpet']);
Получим:
$data = [
'car' => 'fast',
'carpet' => 'old',
'orange' => 'orange',
'apple' => 'tasty',
];
function orderByKeys(array $array, array $keys)
{
foreach ($keys as $k => $v) {
if (!array_key_exists($v, $array)) {
unset($keys[$k]);
}
}
return array_replace(array_flip($keys), $array);
}
Грубый алгоритм bubblesort
import scala.annotation.tailrec
object BubbleSort {
def sort(list: List[Int]) = {
sortHelper(list, list.length)
}
@tailrec
private def sortHelper(xs: List[Int], j: Int): List[Int] = {
if (j == 0) xs
else {
val ys = xs.foldLeft (List.empty[Int]) (running(_, _, j))
sortHelper(ys, j - 1)
}
}
private def running(xs: List[Int], el: Int, j: Int) = {
if (xs.isEmpty) el :: xs
else if (xs.length >= j) xs :+ el
else if (xs.last > el) (xs.init :+ el) :+ xs.last
else xs :+ el
}
}