Skip to content

Commit c9bbe5a

Browse files
committed
Updates algorithm.md
Auto commit by GitBook Editor
1 parent fde6e73 commit c9bbe5a

File tree

1 file changed

+30
-28
lines changed

1 file changed

+30
-28
lines changed

algorithm.md

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
算法可以说是大厂的必考题,对于算法,一定要理解其中的精髓、原理。
1+
> 本书的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide
22
3-
**讲真,大多面试官都会问实现原理和实现的具体过程,一定要知其所以然。**
3+
算法可以说是大厂的必考题,对于算法,一定要理解其中的精髓、原理。
44

55
- 冒泡排序
66

@@ -35,33 +35,37 @@ function bubble_sort($arr)
3535

3636
实现思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快速排序,整个排序过程可以递归进行,以达到整个序列有序的目的。
3737

38-
简单来说就是:找到当前数组中的任意一个元素(一般选择第一个元素),作为标的,新建两个空数组,遍历整个数组元素,如果遍历到的元素比当前的元素要小,那么就放到左边的数组,否则放到右面的数组,然后再对新数组进行同样的操作
38+
简单来说就是:找到当前数组中的任意一个元素(一般选择第一个元素),作为标的,新建两个空数组,遍历这个数组元素,如果数组的值比标的小,那么就放到左边的数组,否则放到右面的数组,然后再对这两个数组进行同样的操作
3939

4040
```
41-
function quick_sort($arr) {
42-
$count = count($arr);
43-
if(1 >= $count) {
44-
return arr;
45-
}
46-
47-
$base_num = $arr[0]; //选择标的
48-
$left_array = array();//小于标的
49-
$right_array = array();//大于标的
50-
51-
for($i = 1; $i < $count; $i++) {
52-
if($base_num > $arr[$i]) {
53-
$left_array[] = $arr[$i];
54-
} else {
55-
$right_array[] = $arr[$i];
56-
}
57-
}
58-
//再分别对左边和右边的数组,进行相同的排序处理方式
59-
$left_array = quick_sort($left_array);
60-
$right_array = quick_sort($right_array);
61-
62-
//最终合并
63-
return array_merge($left_array, array($base_num), $right_array);
41+
function quickSort($arr)
42+
{
43+
if (!isset($arr[1])) {
44+
return $arr;
45+
}
46+
47+
// 选择标的
48+
$baseNum = $arr[0];
49+
$leftArr = array();
50+
$rightArr = array();
51+
52+
foreach ($arr as $v) {
53+
if ($baseNum > $v) {
54+
$leftArr[] = $v;
55+
}
56+
if ($baseNum < $v) {
57+
$rightArr[] = $v;
58+
}
59+
}
60+
61+
$leftArr = quickSort($leftArr);
62+
$leftArr[] = $baseNum;
63+
64+
$rightArr = quickSort($rightArr);
65+
66+
return array_merge($leftArr, $rightArr);
6467
}
68+
6569
```
6670

6771
- 二分查找(折半查找)
@@ -93,8 +97,6 @@ function binSearch($arr, $target){
9397
}
9498
```
9599

96-
算法就简单罗列这几种,了解更多就看看扩展阅读吧。
97-
98100
### 扩展阅读
99101

100102
- [PHP 冒泡排序](https://www.cnblogs.com/wgq123/p/6529450.html)

0 commit comments

Comments
 (0)