Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。280件0数字を指定された範囲内でランダムに発生させ、select_sortで小さい順に並べるプログラムを作成しています。配列のプログラムは作成できたのですが、それをポインタやレジスタにする方法がわかりません。select_sortから下のfor文を書き換えればできるとのことですが、どう書き換えればいいのかわかりません。a[max]);}を以下のポインタのように書き換えれば、一つ目のプログラムも実行可能との指示を受けました。1:01ポインタは変数アドレスを記憶する変数、つまりメモリ先のアドレスを取得してメモリから再び読み込む作業を減らすとは理解しているのですが、使い方があまりわかりません。レジスタの場合、メモリに保存されている配列を読み込むのではなく、レジスタ変数を用いてCPU上に割り当ててそこから読み込むということも理解しています。やりたいこととしては、メモリを読み込んでプログラムを動かすという時間を少なくすると行ったことが目的です。3:072頭が昭和なプログラミングの先生に指示されたとでも言うのなら仕方ありませんが、現在のCコンパイラはそこら辺のことは最適化のフェーズで人間よりも上手くやってくれます。適当に自分でポインタを使ったりregisterを指定しても、それに勝てることは滅多にありません。そのようなミクロな最適化を手作業で行うことに時間を使うより、アルゴリズムの勉強やライブラリの使い方を覚えられた方が良いように思います。ミクロなレベルの話をするなら、forやifは必ず{}と一緒に使うとか、適切なインデントを心がける、変数は使用する直前に宣言する、と言った最近のC言語のコーディングルールを覚えられた方が良いです。そのうちの一部はコンパイラの最適化にも寄与します。それと、投稿時に間違えたのかもしれませんが、現在のあなたのコード、select_sortは正しく動きません。レジスタなんて現在ではほとんど意味のないことを考える前にselect_sortのどこが悪いのかを自分で見つけられるようになりましょう。票1概要select_sortの書き換え方が分からないという質問だと解釈したので、とりあえず動くコードにしました。主な原因はselect_sortの2つ目のforの中がi++になってて、無限ループに陥ってることです。「ポインタやレジスタにする方法」の部分は分からなかったのですが、select_sortの部分は本質を変えないでこれ以上実行時間を減らすことは無理だと思います。本質とは関係ないですが、今回のソートアルゴリズムはO(n^2)なので、n=800000だと1回実行するだけでも凄まじい時間がかかります(6400秒くらい?)。そのため、以下のコードではn=800としています。デバッグでは問題サイズを小さくして繰り返し試せるようにしましょう。今後プログラマとしてやってく上で大事なことなので。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。