Объяснение Википедии:
Как правило, quicksort значительно быстрее на практике, чем другой О (nlogn) алгоритмы, потому что его внутренний цикл может быть эффективно реализован на большей части архитектуры, и в большинстве реальных данных возможно сделать проектные решения, которые минимизируют вероятность требования квадратичного времени.
Сортировка с объединением Quicksort
, я думаю, существуют также проблемы с суммой устройства хранения данных, необходимого для Сортировки с объединением (который является О© (n)), что quicksort реализации не имеют. В худшем случае они - та же сумма алгоритмического времени, но сортировка с объединением требует большего количества устройства хранения данных.
Вам нужно поместить оба элемента в плавающее положение и очистить его.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<div style="border: 1px solid red; width: 100px;">
<a href="#" style="border-color: blue; float: right;">bar</a>
<a href="#" style="float:left;">foo</a>
<div style="clear:both;"></div>
</div>
something
</body>
</html>
Или просто поместите плавающий элемент перед обычным элементом, например:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<div style="border: 1px solid red; width: 100px;">
<a href="#" style="border-color: blue; float: right;">bar</a>
<a href="#">foo</a>
</div>
something
</body>
</html>
Простите за мой английский и рисунок, но вот кратко, как работают плавание и очистка в кросс-браузере:
Элемент может перемещаться влево или вправо. Когда у вас есть плавающий элемент, он не выталкивает «нормальное» содержимое вниз. Узнайте, почему -
Плавно и ясно:
Легенда: Оранжевый / Плавающий вправо, Синий / Плавающий слева, Серые линии / Четкий разделитель, Красный Прямоугольник / границы
В этом случае у вас есть 2 элемента одной строки текста - один плавающий влево, а другой плавающий вправо. При плавании он не будет толкать содержимое вниз, иначе говоря, занимая место. Таким образом, если вы не используете clear: both
в серых линиях, содержимое ниже будет складываться вверх между двумя плавающими элементами и, следовательно, может быть не тем, что вам нужно.
Когда вы используете clear : both
под поплавками, содержимое под поплавками будет сдвинуто до тех пор, пока не будет ни один элемент с самой высокой высотой. Это показано во 2-м и 3-м разделе диаграммы.
Только плавающее:
Обозначение: оранжевый / плавающий вправо, синий / нормальное содержимое, серые линии / линия, которая разделена следующим, красный прямоугольник / границы
Синий нормальный контент уже по умолчанию text-align: left;
. Таким образом, он ориентирован влево. Вам нужно, чтобы float располагался перед обычным контентом, потому что вы говорите браузеру, что он должен перемещаться из этой строки.
Вы должны поэкспериментировать с разными условиями, чтобы увидеть его эффект: размещение поплавка впереди, сзади, перемещение влево вправо, сброс обоих, сброс вправо и влево.
Попробуйте очистить после исправления:
div:after {
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
}
Всегда полезно для всех IE-Float-Combos: дайте каждому элементу с плавающей запятой display: inline;