[アルゴリズム] バブルソート(Go言語編)

2016/12/26

Go テクノロジー プログラミング 特集

t f B! P L
バブルソート編の今回は最近だんだん使う人が増えている気がするGo言語です。 Go言語はコンパイル言語なんだが、インタプリタ的な使い方もできる非常に開発者の気持ちが分かっている言語として個人的に好んでいます。 Google社の作った言語という事で、スピードが高速であるという点や、学習コストも非常に少なく済む言語として、人気があるようです。 WEBエンジニアを志す人は是非、覚えておいて損はないと思いますよ。 Go言語の基本的な説明は過去記事を御覧ください。 Go言語にTry 速攻学習#1

ソースコード

package main import "fmt" func main(){ numbers := []int{10,2,12,7,16,8,13} flg := 0 while := 0 for ; while<10; { flg=0 for i := 0; i < len(numbers)-1; i++ { num1 := numbers[i] num2 := numbers[ i+1 ] if num1 > num2 { numbers[i] = num2 numbers[i+1] = num1 flg++ } } if flg==0 {break} while++ } for i := range numbers { fmt.Println(numbers[i]) } }

解説

Go言語をまだ実践で使ったことが無かったので、いくつかのサイトのサンプルプログラム見ながら作ってみたんだが、まあまあ独自路線を行っている言語という事がよくわかった。

1. while文

Golangはwhile文が無いらしいのでfor文を使って無限ループを作ることで、対応してみた。 ただし、内部にbreak処理を入れないとただのゴミプログラムになってしまうので、要注意!!

2. 配列の要素数

len(numbers)

参考サイト

逆引きGolang golangチートシート

結果

$ go run bubbleSort.go 2 7 8 10 12 13 16 コンパイル無し実行をしてみました。

まとめ

importライブラリは「fmt」のみで対応できたので、さほど難しいプログラムとも言えないのだが、貴重な第一歩となった事は間違いない。 関数化せずに、内部に配列を直接記述したので、汎用性はゼロです。 この辺は現時点ではご勘弁願いたい。 またそのうちリライトするという事で・・・

アルゴリズム過去記事

いろいろなプログラム言語でアルゴリズム学習

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ