1.今日のプログラミング
初めての投稿になるので、今日はソートアルゴリズムの中で一番簡単なバブルソートでも書いていこうかなと思います。
2.ソートアルゴリズムとは
そもそも、ソートアルゴリズムって何それ。。って思う人も中にはいると思います。
なので、ソートアルゴリズムについて少し説明しようと思います。
ソートアルゴリズムの「ソート」とは整理、並び替える。という意味があります。
小さい実装が多い自分にはあまりなじみがないですが、もし、大量のデータを扱う機会が来たときそのデータがぐちゃぐちゃだったら誰も幸せになれないですよね?
その時に役に立つのがソートアルゴリズムです。
データを昇順、降順に並べ替えたり、一定の規則に倣(なら)って整理したほうが、みんな幸せになりますよね?
なので、あんまり自信ないな、、と思う人はぜひ一緒に幸せになりましょう。
3.バブルソート
バブルソートは隣接する値同士の比較をして、小さいほうを前へ、小さいほうを前へ、お前俺よりでかいやんけ。でかいやつはとりまそこに居て。または、俺のほうがでかいから前に行くぜー。小さいのはそのままそこに居な。
というのを繰り返し行い、大きい順または小さい順に並び替えます。
さあ書いていきましょう。
言語・・・C#
IDE・・・Visual Studio2022
※IDEとは、統合開発環境のことでテキストエディタ、コンパイル、デバッカーを一つにまとめてあるもののことを指す名称です。
Xcode,EclipseなどもIDEです。気になったら調べて見てください。
static void Main(string[] args)
{
int[] bubbleSort = { 5, 7, 1, 4, 3, 6, 2 };
SortAlgorithm(bubbleSort);
for(var i = 0; i < bubbleSort.Length; i++)
{
Console.WriteLine(bubbleSort[i]);
}
//while (true) ;実行後すぐに画面が消えてしまう人は追加してみると改善します。
}
public static void SortAlgorithm(int[] array)
{
for(var secondMove = 0; secondMove < array.Length - 1; secondMove++)
{
for(var firstMove = 0; firstMove < array.Length - 1; firstMove++)
{
if (array[firstMove] > array[firstMove + 1])
{
//ここの入れ替えが肝
var tmp = array[firstMove];
array[firstMove] = array[firstMove + 1];
array[firstMove + 1] = tmp;
}
}
}
}
1
2
3
4
5
6
7
このコードを実行すると小さい順に並びました。もし昇順にしたいのなら二重forのifの中の不等号を逆にしてみてください。
もっと簡単に実装する方法はありますが、自分はあえてこのように実装してみました。
なぜかというと、バブルソートで調べると山のように似たコードがあるからです。(悪いコードという意味ではないです。)
こんな書き方もあるんだというあたらしい発想の糧になてくれればと思います。
以上がバブルソートでした。
まとめ
初めての投稿なので足りてないんじゃない?、ここをこうしたほうが見やすい。コードが汚い。など思われるかもしれませんが、おいおい直していこうかなと思うのでコメントしてくれると嬉しいです。
今後もこんな感じでC#やUnityについてのことをやっていこうかなと思います。
・セレクトソート追加しときます https://qiita.com/Ryosuke004682/items/2c3f4d8f55ed47ea20ed
参考資料 : [SortAlgorithm](https://products.sint.co.jp/topsic/blog/algorithm-type / ソートアルゴリズムにの図解が乗っててわかりやすいです。)