-
Notifications
You must be signed in to change notification settings - Fork 0
/
bubble_sort.php
69 lines (53 loc) · 1.64 KB
/
bubble_sort.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
<?php
/*
バブルソート (bubble sort) は、ソートのアルゴリズムの一つ。
隣り合う要素の大小を比較しながら整列させること。
最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、また並列処理との親和性が高いことから、しばしば用いられる。
安定な内部ソート。基本交換法、隣接交換法ともいう。(単に交換法と言う場合もある)
wiki: https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88
*/
// $arr = array(9,8,7,6,5,4,3,2,1,0);
// $arr = array(0,1,2,3,4,5,6,7,9,8);
// $arr = array(0,1,2,3,4,5,6,7,8,9);
$arr = array(10,8,11,2,3,4,5,6,100,7,9,30,600,21);
$cnt = count($arr);
for($ii = 0; $ii < $cnt-1; $ii++){
$is_changed = false;
//$ii-1 最後の値はもうソート済のため
for($i = 0; $i < $cnt-$ii-1; $i++){
$current = $i;
$next = $i + 1;
//次の値と比較して、次の値より大きければ場所の入れ替え
if ($arr[$current] > $arr[$next]){
$tmp = $arr[$current]; //一時保存
$arr[$current] = $arr[$next];
$arr[$next] = $tmp;
$is_changed = true;
}
}
//1回も要素の入れ替えがない場合終了
if($is_changed === false){
break;
}
}
print_r($arr);
/*
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 8
[7] => 9
[8] => 10
[9] => 11
[10] => 21
[11] => 30
[12] => 100
[13] => 600
)
*/
?>