forked from m9rco/algorithm-php
-
Notifications
You must be signed in to change notification settings - Fork 104
/
BubbleSort.php
73 lines (67 loc) · 1.9 KB
/
BubbleSort.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
/**
* 冒泡排序
*
* @author ShaoWei Pu <pushaowei0727@gmail.com>
* @date 2017/6/16
* @license MIT
* -------------------------------------------------------------
* 思路分析:就是像冒泡一样,每次从数组当中 冒一个最大的数出来。
* -------------------------------------------------------------
* 你可以这样理解:(从小到大排序)存在10个不同大小的气泡,
* 由底至上的把较少的气泡逐步地向上升,这样经过遍历一次后最小的气泡就会被上升到顶(下标为0)
* 然后再从底至上地这样升,循环直至十个气泡大小有序。
* 在冒泡排序中,最重要的思想是两两比较,将两者较少的升上去
*
*/
// +--------------------------------------------------------------------------
// | 解题方式 | 这儿,可能有用的解决方案
// +--------------------------------------------------------------------------
/**
* BubbleSort
*
* @param array $container
* @return array
*/
function BubbleSort(array $container)
{
$count = count($container);
for ($j = 1; $j < $count; $j++) {
for ($i = 0; $i < $count - $j; $i++) {
if ($container[$i] > $container[$i + 1]) {
$temp = $container[$i];
$container[$i] = $container[$i + 1];
$container[$i + 1] = $temp;
}
}
}
return $container;
}
// +--------------------------------------------------------------------------
// | 方案测试 | php `this.php` || PHPStorm -> 右键 -> Run `this.php`
// +--------------------------------------------------------------------------
var_dump(BubbleSort([4, 21, 41, 2, 53, 1, 213, 31, 21, 423]));
/*
array(10) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(4)
[3] =>
int(21)
[4] =>
int(21)
[5] =>
int(41)
[6] =>
int(41)
[7] =>
int(53)
[8] =>
int(213)
[9] =>
int(423)
}
*/