Submit Search
アルゴリズム+データ構造勉強会(2)
•
0 likes
•
1,420 views
N
noldor
Follow
1 of 12
Download now
Download to read offline
More Related Content
アルゴリズム+データ構造勉強会(2)
1.
アルゴリズム+データ構造
勉強会(2) 2013-02-04 アロハ)竹腰 彰成
2.
第1回 バブルソート
3.
バブルソートの原理 • 配列上で隣り合うデータを比較し、入れ替える。これを繰り返す。
3 2 4 1 5 比較 2 3 4 1 5
4.
2
3 4 1 5 入れ替え不要 比較 2 3 4 1 5 入れ替える 比較 2 3 1 4 5 入れ替え不要 比較 2 3 1 4 5 一番大きい値が右にきた
5.
2
3 1 4 5 入れ替え不要 比較 2 3 1 4 5 入れ替える 比較 2 1 3 4 5 入れ替え不要 比較 2 1 3 4 5 一番大きい値が右にきた
6.
2
1 3 4 5 入れ替える 比較 1 2 3 4 5 入れ替え不要 比較 1 2 3 4 5 一番大きい値が右にきた
7.
1
2 3 4 5 入れ替え不要 比較 1 2 3 4 5 一番大きい値が右にきた 1 2 3 4 5 1つだけになったので完了
8.
バブルソートの計算量 • 計算量:𝑂(𝑛2 )
• 5個の入れ替え→4個の入れ替え→3個→2個→1個 • 入れ替え回数:(n-1)×(n-1)÷2(三角形の面積) 1 2 1 = 𝑛 − 𝑛 − 2 2 2 3 1 4 5 2 1 3 4 5 1 2 3 4 5 1 2 3 4 5
9.
バブルソートの性質 • 安定なソート •
隣り合う左右の入れ替え =同値の時に入れ替えなければ同値同士の順番は変わらない • 学習用 • 単純だが計算量が大きい • 工夫を付け加えたものが用いられることはある
10.
実習:バブルソートの実装 • 第1回の実習課題を書き換えて、バブルソートを実装してください。 •
バブルソート関数bubble_sort()を作る • ランダムなデータを配列に20個用意する • ソート前データを表示する • bubble_sort()でソートする • ソート後のデータを表示する • 勉強会の残り時間を使って書いてください。時間のある限り質問を 受け付けます • できあがったら提出してください • 時間に間に合わない場合は宿題にします
11.
sort()の置き換えの注意点 • sort($abc) は$abcの中身を直接書き換えているが、これから作る
bubble_sort()関数でそれができるか? • 普通に作ると、引数を書き換えても呼び出し元の関数は変わらない • 置き換えるには2つのアプローチがある • return でソート後の配列を返し、呼び出し元でそれを受け取るようにする • 「function bubble_sort(&$abc)」とすると、$abcを書き換えると呼び出し元の 変数も書き換えられる。 • 前者を「call by value(値渡し)」、後者を「call by reference(参照渡 し)」といいます。 • http://php.net/manual/ja/functions.arguments.php
12.
今日の単語 • バブルソート • call
by value(値渡し) • call by reference(参照渡し)
Download