社会人から始めたプログラミング

プログラミング、エンジニアに関することでの備忘録、シェアしたい情報などを共有するためのブログです。

sortのalgorithm ソートのアルゴリズム!

「まずはソートのアルゴリズムをやってみな!」

そんなことを言われたのは1ヶ月前ぐらいのこと。

 

これは、アメリカに住むプログラミングのお仕事をしている友達に、

 「プログラミング始めるよ!何から始めたらいい?」

って言ったら返信で返ってきた言葉。   

 

 「んー…よくわからない笑、わかったら送るね!」

 

そう返信しておいた。

まぁ初心者にこれがいいのか悪いのかはわからないが、

とにかく1ヶ月前の自分にはさっぱりだった。。笑

 

でもたまたま学習してたら、一つわかったらここで発表!

 

ルビーの言語で、ソート(小さい数字順に配列の中身を入れ替えてくれる)メソッド

を書く機会があったので、こちらに載せます。

 

ソートのアルゴリズム

 

# < Description >
# if you want to try other scores, please change score points yourself.
# ex) score = [45,7,38,90,489,123]
# And try sort_method.rb on your terminal.

score = [3,1,4,6,3,7,9,90,1,4,7,9,0,9,5] def score.sort_method puts sort_score_array = [] self.each do |score| index = 0 sort_score_array.each do |sort_score| if sort_score < score index += 1 end end if index == sort_score_array.length sort_score_array << score else i = 0 new_sort_score_array = [] sort_score_array.each do |sort_score| if i == index new_sort_score_array << score end new_sort_score_array << sort_score i += 1 end sort_score_array = new_sort_score_array end end puts sort_score_array end score.sort_method

(SyntaxHighlighter でこのコードに行数がついた表現をしてくれるように設定できるよ!)

 

これで配列の中にある数字を小さい順に並び替えてくれるよ!

 

ポイントは、

①最初のif文のところで何番目に数字が大きいか確認する。

②空の配列を準備して、小さい順番通りに入れていく。

 

です!!

 

これを理解するには、全くプログラミングをやってない段階からだと

・eachメソッドが何をしているのか。

・i += ってなんなのか

・if文はなんなのか

・メソッドの定義ってクラスメソッド、インスタンスメソッド、特異メソッドってあるけどなんなのか

・配列ってなんなのか

・<<とか==とか[ ]ってなんなのか

 

ということが必要そうだ…

少しは理解できて進めたようだ。

 

うん、できたときとか、わかった時とか、

考えてる時もなかなか楽しくなってきた。

 

やっぱ少しずつできるようになると楽しいね!

 

 

としさん