Bubble sort(バブルソート)
相変わらずアルゴリズムの本を読んでいます〜
いつか役に立つと信じて...
今回はバブルソートです。
前提
バブルソートも前回の挿入ソートと同じく、ソート済み部分と未ソート部分に分けて考えます。
手順
- 配列の後ろから、隣り合う要素を順番に比較して、大小関係が逆ならば入れ替える。
この操作を並びが正しくなるまで繰り返す。
ソースコード
本に乗ってるやつの変数名かえたり、コメントつけたやつです〜
#include<iostream> using namespace std; // バブルソート int bubbleSort(int array[], int size) { // 並び替え回数カウント用 int times = 0; bool flag = 1; // 順番が逆になっている要素がなくなるまで繰り返す // array[i]までがソート済み配列になる for ( int i = 0; flag; i++ ) { flag = 0; // 最後の要素から、未ソート部分すべての要素 // を探索する for ( int j = size - 1; j >= i; j-- ) { // 順番が逆になっていたら入れ替える if ( array[j] < array[j-1]) { swap(array[j], array[j-1]); flag = 1; times++; } } } return times; } int main() { int array[100], size, times; cin >> size; for (int i=0; i<size; i++) cin >> array[i]; times = bubbleSort(array, size); for (int i=0; i<size; i++){ if (i) cout << " "; cout << array[i]; } cout << endl; cout << times << endl; return 0; }
JavaScript
JSでも書いてみました.
こっちは降順もあります
See the Pen Bubble sort by ysk (@00ysk) on CodePen.