数组是个重要的主题,一定要高度重视!很多算法仅在数据经过排序后才管用
有时候,需要在内存中存储一系列元素。假设你要编写一个管理待办事项的应用程序,为此需要将这些待办事项存储在内存中 使用数组意味着所有待办事项在内存中都是相连的。现在假设你要添加第四个待办事项,但后面的那个抽屉放着别人的东西!你需要重新请求计算机重新分配一块可容纳4个待办事项的内存,再将所有待办事项都移到那里
元素的位置称为索引 数组和链表操作的运行时间
假设Facebook使用的是一种混合数据:链表数组。这个数组包含26个元素,每个元素都指向一个链表。这种新数据结构的查找和插入速度更快还是更慢?
class SelectionSort
{
public static function sort($array) {
$length = count($array);
foreach ($array as $outerIndex => $item) {
$minIndex = $outerIndex;
for ($innerIndex = $outerIndex + 1; $innerIndex < $length; $innerIndex ++) {
if ($array[ $minIndex ] > $array[ $innerIndex ]) {
$minIndex = $innerIndex;
}
}
$temp = $array[ $outerIndex ];
$array[ $outerIndex ] = $array[ $minIndex ];
$array[ $minIndex ] = $temp;
}
return $array;
}
}
$array = [5, 3, 6, 2, 10];
echo join(SelectionSort::sort($array), ',') . PHP_EOL;
// 输出:2,3,5,6,10