としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

flutter-top


Flutterの魅力の一つとしてホットリロードがよくあげられています。

しかし、正直Flutter初心者の私からしてみたらそれってどんな機能だと疑問に思ったので本記事では、Flutterのホットリロードを実際に行ってみます。



ホットリロードを使ってみる


まずは新規プロジェクトを作成して、main.dartの中身を以下のようにしておきます。

import 'package:flutter/material.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
body: Center(child: Text("ホットリロードって何?")),
),
);
}
}

この状態でエミュレータを起動して実行ボタンを押下してみると、エミュレータでアプリが起動して以下のような画面が表示されます。

キャプチャ


ここからホットリロードを試してみます。

アプリを実行したままの状態でmain.dartを以下のように書き換えてみましょう。

import 'package:flutter/material.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
body: Center(child: Text("これがホットリロードだ!!")),
),
);
}
}

main.dartを保存後、エミュレータの画面を確認すると以下のようになっているはずです。

キャプチャ

なんとアプリを再起動していないのに表示内容が変わっているという!!

ソースコードを書き換えるだけで、再実行しなくてもアプリの機能が変更されるのがホットリロードです!!



ホットリロードの利点


ホットリロードには以下の利点があります。

  • ソースコードを変更後、すぐに動作確認ができる
  • デザインだけ変更したい場合の確認が楽になる




まとめ


ホットリロードは微細な変更点を確認するときにすごく便利な機能です。

ホットリロードを有効活用して、スムーズな開発を行いましょう。





PXL_20210508_053434563


瀬尾まいこさんの坊ちゃん文学賞を受賞したデビュー作である卵の緒を読みました。

本書には中編である『卵の緒』と『7's blood』の2編が収録されており、どちらとも家族愛が描かれている作品でした。

以下、あらすじと感想になります。



あらすじ


僕は捨て子だ。

なぜ僕がそう思うかって?

それはお母さんが僕にへその緒を見せてくれないからだ。

お母さんは僕を卵で産んだというが、僕は人間は卵から生まれないことを知っている。


これは、小学生の育生の目を通して親子の絆の強さを描く物語だ。



『卵の緒』の感想(ネタバレあり)


育生は論理的に順序立てて物事を考えたい、すごく真面目な小学生です。

一方、母は育生と違って感性を大切にする直感重視の人間です。

この二人の性格は正反対のため一見親子としては、相性があまり良くなさそうという印象があります。

しかし、二人の掛け合いを読んでいると違和感を感じないどころか、人の性格ってそれぞれ違うけどそれでも仲良くやっていけるんだなということが分かり心がほっこりしてきます。


この物語では、「実の子」ではない育生、「不登校」の池内君、「再婚」する母と朝ちゃんといった物語によっては負のイメージが強い登場人物ばかりが現れます。

けれども、彼らはこれらのことを前向きにとらえていて明るさを持っているため本作は明るい作品として仕上がっています。

小学生ながら育生のように自分が実の子ではないと分かったら、自分が実の子ではないことに怒りを感じてしまいそうですが、育生は母がその事実を自分に言わないことに怒りを感じてしまいます。

このことから育生って本当に母のことが大好きなんだなということが伝わり心をほっこりさせられました。


また、ラストシーンでは母と朝ちゃんの間に子どもが生まれ、育生に妹ができます。

この妹は育生とは血のつながりはありませんが、育生が卵の殻を子どもに見立てて大切にするシーンから、家族の絆に血のつながりは必ずしも必要ではないということが分かります。



最後の育生が、

そして、親子の絆はへその緒でも卵の殻でもないことが分かった。それはもっと、掴みどころがなくとても確かなもの。だいたい大切なものはみんなそうだ。

と語っているラストからも素敵な親子の絆を感じることができ心が温かくなりました。



『7's blood』の感想(ネタバレあり)


こちらは、異母兄弟である姉と弟の物語です。

『卵の緒』が親子の絆を重視していた作品であるなら、こちらは兄弟の絆に着目している作品です。

初めて七生が七子の家に来た時、彼は七子たちから嫌われてしまえば家を追い出されると思っており、どこかよそよそしい感じの雰囲気でした。

しかし、物語が進むにつれて七生と七子の二人がそれぞれの想いをぶつけるようになり、次第に二人の距離は縮まっていきます。

本作の見どころで一緒に七生が買ってきたケーキを食べるシーンなどがありますが、個人的には別れる直前のお互いの髪を切りあうシーンが大好きです。

出会った当初の二人だったらお互いの髪を切りあうなんてありえないことだったけど、一年たった今では二人が本当の家族であるということを再認識させられるシーンで読んでいて泣いてしまいました。


ラストでは、二人はお互いに二度と会うことはないと悟っているが、それを直接口にはだしません。

遠く離れていても一年間の思い出と血のつながりは存在していたので、二人はいつでもつながっているという兄弟愛を感じさせられました。



まとめ


『卵の緒』と『7's blood』は違った形の家族愛を描いていましたがどちらの作品も良かったです。

人と人のつながりって大切なんだなと改めて認識させられました。

本作を読んで他の瀬尾まいこさんの作品を読んだことがない方は、ぜひそちらも読んでみてください。










バッチファイルを使って、試験に使用する大容量ファイルを作成してみました。



やりたいこと


今回は自分で作成したソフトの試験で10万行のファイルを読み込むという試験を行いたかったので、以下のようなファイルをバッチファイルで作成したかった。

abc
def
0123456789
0123456789
0123456789
0123456789
以下10万回『0123456789』が続く

ちなみにファイルの内容は、サンプル用の適当なものです。



ファイルに書き込む



上書き


以下のようにechoコマンドを使用して、出力したい内容とファイル名を指定することができます。

echo 出力したい内容> ファイル名

以下に上書きの場合のバッチファイルのサンプルを記しておきます。

バッチファイル
echo 123> ./test.txt 
echo 456> ./test.txt 

出力
456



追記


上書きから「>」の部分を「>>」に変更すると追記になります。

echo 出力したい内容>> ファイル名 

以下に追記の場合のバッチファイルのサンプルを記しておきます。

バッチファイル
echo 123>> ./test.txt 
echo 456>> ./test.txt

出力
123
456



for文


バッチファイルではfor文は以下のようにして書くことができます。

for /l %%変数 in (開始値,増減値,終了値) do (
    処理
)

これを先ほどのファイル出力のコマンドと組み合わせると以下のようになります。

バッチファイル
for /l %%i in (1,1,5) do (
    echo abc>> ./test.txt
)




試験用ファイルを作成する


先ほど説明したコマンドを組み合わせて、最初にやりたいことで示したファイルを作成してみます。

バッチファイル
rem 試験用ファイルを作成する
@echo off

echo abc>> ./test.txt
echo def>> ./test.txt
for /l %%i in (1,1,100000) do (
    echo 0123456789>> ./test.txt
)




まとめ


バッチファイルで試験用のファイルを作成してみましたが、コンパイルなどがいらないので単純なファイルを作るのには便利だなと思いました。



Ryzenの純正CPUファンのLEDを制御しようと思い、Wraith Prismを起動しようとしたところ以下の画面から動かず起動できませんでした。

キャプチャ

この問題の対処法を以下に記していきます。



【目次】
対処法
まとめ




Wraith Prismが起動しない問題の対処法


結論からになりますがケーブルをさし忘れていたため、ソフトウェアがCPUクーラーを認識できなかったことがWraith Prismが起動しない原因でした。

CPUクーラの箱の中に以下のようなケーブルがあります。

PXL_20210503_013357623


これをCPUファンとマザーボードに差し込んでください。

PXL_20210503_013602436

するとWraith Prismが起動してCPUファンのLEDを制御できるようになります。

キャプチャ



まとめ


Wraith Prismが起動しない原因はケーブルのさし忘れでした。

きちんと説明書は読むべきですね…。




PXL_20210502_032728264.MP


住野よるさんの『よるのばけもの』を読みました。

最初は、少年が夜になると化け物に変わってしまうということで、ファンタジー要素が強い作品を想像していました。

しかし、読み進めていくとすごく現実的な作品であることが分かり色々と考えさせられました。

以下、あらすじと感想になります。




『よるのばけもの』のあらすじ


夜になると、僕は化け物になる。

寝ていても座っていても立っていても、それは深夜に突然やってくる。

化け物になるようになった日から、僕は夜眠ることができない。

ある日の夜、いつものように化け物になった僕は、忘れ物をとりに夜の学校へと忍び込んだ。

夜中だし誰もいないと思っていた教室には、なぜかクラスメイトでいじめられっ子である矢野さつきがいた。

彼女は、僕のことを見ると少しだけ驚いた様子を見せて「何し、てんの?」と問いかけてきた。

僕が自分のロッカーを漁っていたのもあって、彼女に僕の正体がばれてしまった。

その日から僕は、彼女に正体をばらされないという条件と引き換えに夜の学校に通い、彼女と夜の休み時間をともに過ごすようになる。

彼女と過ごし、彼女のことを理解していくうちに、この世界について僕にある疑問が湧いてくる…。

この物語は『今』を変えていく、少年の小さな勇気の物語。



感想(ネタバレあり)



本音が言えない世界


『よるのばけもの』に登場する多くの人物は主人公のあっちー君をはじめ、世界のあり方(この物語での世界とはクラスのこと)について疑問を持っており、その疑問の正体を知っているにも関わらず本音を言えません。

なぜ本音を言えないかというと、少しでも周りと違うことをしてしまうと、共感の意識の輪からはじかれてしまうからです。

本作では、ヒロインの矢野さつきがクラスでいじめられています。

矢野さつき以外のクラスメイトは、矢野さつきはいじめの対象だという仲間意識を持つことで自分がのけ者にされることを防ごうとしています。

物語中では、矢野のクラスメイトである井口がうっかり矢野の落とし物を拾ってしまっただけでいじめの対象になりました。

住野よるさんは、若者をはじめ多くの人たちに嘘とたてまえだけで過ごしていて、本音が伝えられない世界には違和感があるということを伝えたくてこの物語を書いたのではないのでしょうか。

人間は一人で生きることができず、それが原因で無駄な仲間意識が生まれ、私たちは本音が言えず苦しんでいるということを痛感させられました。


いじめは誰が悪い?


『よるのばけもの』ではいじめというテーマを扱っていましたが、いじめって結局誰が悪いのかということを改めて考えさせられました。

いじめには、被害者、加害者、傍観者という三役があります。

本作を読んでいるといじめで一番怖いのは、直接的にはいじめには参加しないが、陰でこそこそと参加していたり、見て見ぬふりをしている傍観者が一番怖い存在だと個人的には感じました。

もし傍観者たちが矢野をいじめている現場を白けた目で見たり、注意することができれば矢野に対するいじめはすぐにおさまったと考えられます。ただ、傍観者がこういった行動をできないのも根本にはスクールカーストというものがあるからなんでしょうね…。

多くの傍観者から見たら、誰かがいじめられていて自分の安全が確保されているような環境がいいクラスだと感じている場合もあるので、いじめの問題って本当に難しいなと改めて感じさせられました。


どうして笠井は悪い子と言われた?


緑川からクラスの中心人物である笠井に対して、「笠井くんは悪い子だよ」というセリフがありました。

なぜ笠井はこのようなことを言われたのでしょうか?

結論から申し上げますと、笠井が緑川のことを好きといった嘘の想いをクラスメイトに認識させることで矢野へのいじめを起こしたからです。

作中では直接言及していませんが笠井は緑川のことをおそらく好きではないでしょう。緑川のことを好きと認識させておけば、緑川の本を投げた矢野に対するいじめが起きると考えたゆえに笠井はこの嘘を貫き通しています。

私は、笠井という人物は陰で人を自分の思うように操ることができるのを見て楽しんでいるタイプの人間だと思っています。

そのため、笠井は矢野からも「頭がよ、くて自分がどうす、れば周りがどう動、くか分かって遊んでる男、の子?」という風に表現されたのでしょう。


あっちー君の今後


物語はあっちー君が矢野に挨拶した場面で終わっています。

この終わり方は、正直ハッピーエンドとは言うことができません。

少なくとも今後あっちー君は、矢野や井口のようにクラスメイトからいじめの被害にあうのでしょう。

矢野に挨拶しただけで工藤があっちー君から席を遠ざけたりして、あっちー君が世界の真理にきづいたところでこの世界はこれまで通りと変わらないことが想像できます。

ただ、あっちー君は矢野と違って一人ではありません。あっちー君には矢野がついていて、矢野にもあっちー君がついています。

もしかしたらあっちー君が矢野に挨拶をしたことをきっかけに、緑川と矢野が仲直りできたりすることもあるかもしれません。

あっちー君一人が気が付いただけでは、なかなかクラスの仲間意識を変えることができませんが、行動に移したことでもしかしたら世界がいい方向に向かっていくのかもしれませんね。



まとめ


『よるのばけもの』は人間関係が難しい現実世界で本音を話せるようになるためにはどうしたらいいのかを考えさせられる作品でした。

あっちー君のように間違った仲間意識に気が付くことができる人間が一人でも増えて、この世界からいじめなどが少なくなることを祈るばかりです。





PXL_20210501_132442507


湊かなえさんの青春小説『ブロードキャスト』の続編であるドキュメントを読みました。

前回のブロードキャストが青春色が強かったのに対して今回の『ドキュメント』は湊かなえさんらしいイヤミスといった感じの要素もありおもしろかったです。

ブロードキャストにつての内容を思い出したい方は以下の記事をごらんください。



以下、あらすじと感想になります。




『ドキュメント』のあらすじ


中学時代に陸上で夢を追い求めていた町田圭祐は、高校受験の当日交通事故にあい、走ることができない体になってしまった。

そのこともあり高校では憧れていた陸上部ではなく、放送部に入ることになる。

3年生が引退後、圭祐は放送部の同級生の正也た久米さんたちとテレビドキュメント部門に挑戦していた。

テレビドキュメント部門の題材として陸上部の活動を撮影していくことになり、圭祐は中学時代の陸上部の仲間であり、親友である良太の取材をすることになった。

取材が順調に進んでいく中、ある日撮影に使用していたドローンの映像に煙草を持って部室を出てくる、良太の姿が映されていた。

陸上に真剣に向き合ってきた良太がそのようなことをするはずがないと思っている圭祐は、事件解決のために奔走する。

事件について調べていくと、計画を企てた意外な人物が明らかになっていく。



感想(ネタバレあり)


最初に述べたとおり、今回の『ドキュメント』は前作の『ブロードキャスト』と比べてミステリー要素が強く湊かなえさんらしさが強く表れている作品でした。

単行本化にあたり書き下ろされた終章は、コロナに対する湊かなえさんからの高校生からの応援のメッセージという感じが強かったので、イヤミスという感じではなかったのですが、7章を読み終わった時点では犯人も見つかったのですが、どことない嫌な気持ちにさせられてしまいました。

こういう後味の悪いところが湊かなえさんの作品らしくていいんですけどね。


この作品を通して伝えたかった事


良太が煙草を持っていた映像を陸上部の原島先生に送信した犯人は、放送部の翠先輩でした。

同機は松本(兄)と間接的に別れる原因になった、良太を貶めるために行った行動でした。

この文だけ見たら翠先輩最悪のやつだと感じてしまうかもしれませんが、実際は翠先輩も被害者の一人です。

誰からの被害者なんだと思う方もいるかもしれませんが、皮肉なことに放送に関連するマスコミのでっち上げた記事が原因で翠先輩は良太を貶める行動をしてしまいました。つまり、翠先輩もマスコミによる被害者だったのです。

高校生だけに言える話ではないのですが、日本人はマスコミに対する信頼性をなぜか異様に高く持っています。

そのため、一度世の中に出てしまった記事に関しては、本人がどれだけ否定したとしても記事に書かれているのだからマスコミが正しいのだと感じてしまう人が多いです。

また、現代ではネットが普及したことにより、どんな人でもネット記事を書くことができて注目を集めるためだけの嘘の記事が増えつつあります。

私の解釈になってしまいますが、湊かなえさんはこの『ドキュメント』という作品を通じて私たちにマスコミが書いている記事は全てが真実ではないよということを伝えたかったのではないのかと思っています。

もちろん全てのマスコミ関係者が悪というわけではないのですが、この作品を読んでマスコミ関係の人には自分が書いた記事が原因で人を不幸にする可能性があるということを再度認識してほしいと感じました。


コロナに対する湊かなえさんのメッセージ


文庫化を記念して書き下ろされた終章では、湊かなえさんなりのコロナで苦しんでいる人々に対しての強いメッセージがありました。

もし、昨年の時点でコロナが収束していたら終章はまたちがった作品が書かれていたのではないのかと推測することができます。

現実では、昨年は多くの部活動の大会が中止になってしまい多くの若者たちが実力を発揮できないまま部活動を引退することになりました。

『ドキュメント』の作品内でもコロナの影響で放送部の甲子園のような存在であるJコンが中止されてしまいました。

しかし、本作ではJコンの代替となるコンテストがWeb上で開催されることになり、放送部の2年生たちは悔いの残らないように実力を発揮することができました。

おそらく湊かなえさんは、中学生や高校生たちに対してコロナが原因で自分の望むような結末にならなかったかもしれないけれども、代替の大会などを利用したりしてこれからの未来のために実力を十分発揮して頑張ってほしいということを伝えたかったのではないのでしょうか。

また、こういった大会の運営に関わる人たちに対しても、色々と大変かもしれないが若者たちの夢を叶えるために何かしてほしいということを伝えたかったと私は感じました。



まとめ


『ドキュメント』は個人的には前作よりも自分好みの作品でいい感じに湊かなえさんらしさがありました。

ただ、次回作があるなら圭祐たちの高校最後になるJコンをイヤミス要素少なめの青春要素多めで書いてほしいなという風にも感じてしまいました。

ちなみに今回購入したのはサイン本でした。

PXL_20210501_132458996








C++でStackを使用して逆ポーランド記法で入力された式の結果を求めるというAIZU ONLINE JUDGEのALDS_1_3_Aを解きました。



逆ポーランド記法とは


逆ポーランド記法とは、演算子をオペランドの後に記述するプログラムを記述する記法です。

例えば、(1 + 2) * (5 + 4)という中間記法で書かれた数式があったとする。

これを逆ポーランド記法では次のように書くことができます。

1 2 + 5 4 + *



問題


逆ポーランド記法で与えられた数式の計算結果を出力してください。

入力例


1つの数式が1行に与えられます。連続するシンボル(オペランドあるいは演算子)は1つの空白で区切られて与えられます。
1 2 +


出力例


計算結果を1行に出力してください。

3

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/3/ALDS1_3_Aより



Stackの実装


#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

struct Stack{
int S[1000];
int Top;
};

void push(Stack* stack, int num){
stack->S[stack->Top] = num;
stack->Top++;
}

int pop(Stack *stack){
stack->Top--;
return stack->S[stack->Top];
}

int main(void){
Stack stStack = {0};
char s[100];
int num1, num2;
while(scanf("%s", s) != EOF){
if (s[0] == '+'){
num1 = pop(&stStack);
num2 = pop(&stStack);
push(&stStack, num2+num1);
}
else if(s[0] == '-'){
num1 = pop(&stStack);
num2 = pop(&stStack);
push(&stStack, num2-num1);
}
else if(s[0] == '*'){
num1 = pop(&stStack);
num2 = pop(&stStack);
push(&stStack, num2*num1);
}
else{
push(&stStack, atoi(s));
}
}

num1 = pop(&stStack);
cout << num1 << endl;

return 0;
}




C++でバブルソートの問題であるAIZU ONLINE JUDGEのALDS_1_2_Dを解きました。



問題


1  insertionSort(A, n, g)
2      for i = g to n-1
3          v = A[i]
4          j = i - g
5          while j >= 0 && A[j] > v
6              A[j+g] = A[j]
7              j = j - g
8              cnt++
9          A[j+g] = v
10
11 shellSort(A, n)
12     cnt = 0
13     m = ?
14     G[] = {?, ?,..., ?}
15     for i = 0 to m-1
16         insertionSort(A, n, G[i])

shellSort(A, n) は、一定の間隔 gg だけ離れた要素のみを対象とした挿入ソートである insertionSort(A, n, g) を、最初は大きい値から gg を狭めながら繰り返します。これをシェルソートと言います。

上の疑似コードの ? を埋めてこのプログラムを完成させてください。nn と数列 AA が与えられるので、疑似コード中の mmmm 個の整数 Gi(i=0,1,...,m1)Gi(i=0,1,...,m1)、入力 AAを昇順にした列を出力するプログラムを作成してください。




シェルソートを実装する


ソートを行う間隔gは最後が1で終わればどんな数列でも良さそうだったので今回は、gn+1 = 3gn + 1という数列を使用します。

この数列に2のべき乗のような間隔が短すぎるものを入れると無駄な計算が発生しやすくなり、
シェルソートで実装する意味がなくなるみたいです。

#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

int cnt = 0;

void insertionSort(int *A, int n, int g){
for(int i=g; i<n; ++i){
int v = A[i];
int j = i-g;
while ((j >= 0) && (A[j] > v)){
A[j+g] = A[j];
j = j - g;
cnt++;
}
A[j+g] = v;
}
}

void shellSort(int* A, int n){
cnt = 0;
int m = 1;
vector<int> G;
G.push_back(1);
while(3*G[m-1]+1 <= n){
G.push_back(3*G[m-1]+1);
m++;
}

cout << m << endl;
for(int i=G.size()-1;i>=0; --i){
cout << G[i];
if (i != 0){
cout << " ";
}
}
cout << endl;

for(int i = G.size()-1; i >= 0; --i){
insertionSort(A, n, G[i]);
}
}

int main(void){
int n;
cin >> n;
int *A = new int[n];
for(int i=0; i<n; ++i){
cin >> A[i];
}
shellSort(A, n);
cout << cnt << endl;
for(int i=0; i<n; ++i){
cout << A[i] << endl;
}

return 0;
}



C++でバブルソートの問題であるAIZU ONLINE JUDGEのALDS_1_2_Aを解きました。



問題


数列 A を読み込み、バブルソートで昇順に並び変え出力するプログラムを作成してください。また、バブルソートで行われた要素の交換回数も報告してください。


入力例


入力の最初の行に、数列の長さを表す整数 N が与えられます。2行目に、N 個の整数が空白区切りで与えられます。

5
5 3 2 4 1


出力例


出力は 2 行からなります。1行目に整列された数列を 1 行に出力してください。数列の連続する要素は1つの空白で区切って出力してください。2 行目に交換回数を出力してください。
1 2 3 4 5
8

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/2/ALDS1_2_Aより



バブルソートを実装する


#include <iostream>
#include <cmath>

using namespace std;

void bubbleSort(int *A, int n){
int count = 0;
int flag = 1;
while(flag){
flag = 0;
for(int i=n-1; i>=0; --i){
if (A[i] < A[i-1]){
swap(A[i], A[i-1]);
count++;
flag = 1;
}
}
}
for(int i=0; i<n-1; ++i){
cout << A[i] << " ";
}
cout << A[n-1] << endl;
cout << count << endl;
}

int main(void){
int n;
cin >> n;
int* A = new int[n];
for (int i=0; i<n; ++i){
cin >> A[i];
}
bubbleSort(A, n);
delete[] A;
return 0;
}


C++で選択ソートの問題であるAIZU ONLINE JUDGEのALDS_1_2_Bを解きました。



問題


数列Aを読み込み、選択ソートのアルゴリズムで昇順に並び替え出力するプログラムを作成してください。


入力例


入力の最初の行に、数列の長さを表す整数 N が与えられます。2行目に、N 個の整数が空白区切りで与えられます。
6
5 6 4 2 1 3


出力例


出力は 2 行からなります。1行目に整列された数列を 1 行に出力してください。数列の連続する要素は1つの空白で区切って出力してください。2 行目に交換回数を出力してください。
1 2 3 4 5 6
4

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/2/ALDS1_2_Bより



選択ソートの実装


#include <iostream>
#include <cmath>

using namespace std;

void selectSort(int *A, int n){
int count = 0;
for(int i=0; i<n; ++i){
int minj = i;
for(int j=i; j<n; ++j){
if (A[j] < A[minj]){
minj = j;
}
}
if (i != minj){
swap(A[i], A[minj]);
count++;
}
}
for(int i=0; i<n-1; ++i){
cout << A[i] << " ";
}
cout << A[n-1] << endl;
cout << count << endl;
}

int main(void){
int n;
cin >> n;
int* A = new int[n];
for (int i=0; i<n; ++i){
cin >> A[i];
}
selectSort(A, n);
delete[] A;
return 0;
}



↑このページのトップヘ