プログラマー試験ノート4: ソートアルゴリズム

プログラマー試験ノート4: ソートアルゴリズム

理由はよく分かりませんが、WORD ファイル内のすべての日付が変更されました。WORD マクロ ウイルスの可能性があります。しかし、なぜ感染したのでしょうか?これは本当に奇妙です。私はマクロを使ったことがありません。忘れてください。今それに対処する時間はありません。急いでこのチュートリアル日記を完成させる必要があります。

今日の授業は、ようやくアルゴリズムという本題に入りました。まだ始まったばかりなので、簡単なソートアルゴリズムから始めましょう。次のような質問をコピーしておきました。

すでにソートされた配列があります。ここで数値を入力し、元のソート規則に従って配列に挿入します。

このトピックを見たとき、私は自信が持ててすぐに書き上げました。しかし、私のプログラムに致命的な欠陥があることを誰が知っていたでしょうか。最初に先生に見せたとき、私はとても誇りに思っていましたが、先生が私の間違いを指摘したとき、本当に申し訳なく思いました。私は間違っていたので、みんなが比較できるように、私が出した答えを書き留めることにしました。

#定義 n 8
主要()
{
int a[n];
整数 i、j、t、s;
(i=1;i<=7;i++) の場合
10 は i-1 です。
(i=0;i < 7;i--) の場合
もし ( a[ i ] < a[ i+1 ] )
{ s = a[ i ] ; a[ i ] = a[ i+1] ; a[ i+1] = s; }
(i=0;i<7;i++) の場合
printf("%d,a[ i ]);
}

間違いがなく、本当に正しいように見えますが、注意しないと見逃してしまうかもしれません。先生には、この能力が備わっているので、私の間違いをゆっくりと教えましょう。実は、間違いは最後に値が割り当てられていない要素です。初期値が渡されていないため、ランダムに生成された数字は非常に大きくなったり、非常に小さくなったりする可能性があります。ただし、挿入された数字よりも小さい場合は、正しい並べ替えではなくなります。さて、これで終わりなので、正しい手順を見てみましょう。

#定義N8
主要()
{
整数a[N] = {20,30,40,50,60,70,80};
整数n、i;
(i=N-1;i>=0;i--) の場合
{
if(n そうでなければ break;
}
1. 関数は、n から 1 までの整数である。
}

より良いソートアルゴリズムを紹介します。ソートを説明する際、先生は4日目に図1のような絵を描きました。この絵は当時のソート状況を簡単に示し、順序をより明確にします。しかし、もっと重要な点は、ソースコードを見ただけで目が回り、何が起こっているのか全く分からなくなるということです。私自身もこのプログラムを書いたときにこの方法に従ってみたのですが、よく理解できなかったので、皆さんにもこの方法を学ぶことをお勧めします。

ソートといえば、バブルソートという新しいソート方法を教わります。以前QBでこれを習ったことを覚えていますが、今日、先生の話を聞いて自分で描いてみたら、本当に分かりやすくなりました。バブル ソート法は、プログラムの 2 つのサイクルによって決定されるため、実際には左沈降ソート法とも呼ばれます。下から上に向かう場合はもちろんバブル ソート、そうでない場合は上から下に向かう場合は沈降ソートです。次の 2 つのプログラムが表示されます。

整数 n=6,i,j;
(i=n-1; i > 0; i--) の場合
(j=0; j < i; j++) の場合
a[j]>a[j+1]の場合{スワップ};

上記はバブリング法です

整数 n=6,i,j;
(i=0; i < n; i++) の場合
(j=n-1; j > i; j--) の場合
if(a[j]これは沈んでいます。

今日は基本的に一日中このアレンジの練習をしました。もうすぐ学校が終わる時間でしたが、先生は時間をうまく管理してくれたので、まったく無駄がなく、授業を30分延長してくれました。ああ〜!時には他人が良いと思うこともありますが、時には本当に悪いと思うこともあります。しかし、何があっても、彼は結局私たちの先生です。彼は C 言語の条件文の説明を終えるためだけに 30 分も私たちを遅らせましたが、正直に言うと、それでも何かを学びました。

C 言語には、条件演算子 ?:、基本的な if ステートメント、switch ステートメントなど、いくつかの形式の条件文があります。最も柔軟性が高いのは条件演算子 ?: で、これは C 言語で唯一の三項演算子でもあります。なぜこれほど柔軟なのでしょうか? パラメータが式だからです。式は C 言語の最も柔軟な部分です。では、なぜ柔軟性がないのでしょうか?ソースプログラムは次のとおりです。

整数a=5,b=10,c=8;
もし(a>b)
if(a>c)printf("a";
そうでない場合、(b>c)printf("b";
それ以外の場合はprintf("c";

このソースコードを見て違和感を感じませんか?これもC言語のもう一つの特徴です。このプログラムの答えがわかりますか?でも実は難しくないし、プログラムも短いです。答えを教えましょう。答えは b を出力することです。ロジックはとてもシンプルで一目でわかります。誰ですか?誰が?誰がここでふざけているんだ、答えは出力 b だ、バカ!あなたの文章力は十分ではないので、プログラムを整理しましょう

整数a=5,b=10,c=8;
もし(a>b)
もし(a>c)
printf("a";
それ以外
if(b>c)printf("b";
それ以外の場合はprintf("c";

今ははっきりと見えますか?最初の if ステートメントは最初から真ではないので、答えは何もありません。では、どうして答えが存在するのでしょうか?これも状況を示しているので、適切なコード形式を維持する必要があります。適切なコーディング スタイルがあれば、適切なプログラムが作成されます。そして今日、私は一つのことを理解しました。次の if ステートメントを見ていきたいと思います。

もしも
そうでなければ
もしそうでなければ
そうでなければ
もし
それ以外

当初、この 2 つは異なるものだと思っていました。QB では、これら 2 つは異なる if 文であるという印象を持っていました。でも、今日はそれが分かったので、皆さんも分かるはずです。多分、私はただのバカなだけでしょう。

C 言語のスイッチも他の高級言語とは異なります。お気づきですか?さて、4日目の図2を見てみましょう。この図では、この文と他の文の違いが明確に示されており、条件に定数が使われているため、先生自身はこのswitch文をあまり使いたくないと言っていました。この条件演算子を理解したらどうなるでしょうか? : 本当に便利です。無限にネストできます。ここではこれ以上は言いません。ゆっくり体験して勉強してください。

<<:  3つの主要なSQL ServerアルゴリズムのI/Oコストの簡単な分析

>>:  知恵くんの“いいとこ”が明らかに!初のユニバーサルな具現化ベースモデル、ロボットは「理解はできるができない」状態に別れを告げる

ブログ    
ブログ    
ブログ    

推薦する

違反した企業は売上高の6%の罰金を科せられる可能性がある。EUは人工知能技術の監督を強化する予定だ。

海外メディアの報道によると、欧州委員会は最近、企業がEUの規則に違反し、禁止されている人工知能アプリ...

AWS CISO: GenAI は単なるツールであり、万能薬ではない

Chris Betz 氏は、サイバーセキュリティにおける GenAI の役割について恐れたり、過度に...

...

電子顧客サービスの管理不足は問題を解決することはできず、トラブルを増やすだけです

カスタマーサービスに電話すると、ロボットはプログラムに従ってプロンプトを出すだけで、ユーザーが望む情...

AIが都市の発展にどのように役立つか

人工知能は、特に交通インフラに関して、都市開発の近代化という使命を変革することができます。現代社会に...

量子コンピューティングの画期的な論文3本がネイチャーの表紙に登場:忠実度は99%を超え、実用レベルに到達

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

AI 開発の方向性に関する大論争: ハイブリッド AI?強化学習?実践的な知識と常識をAIに統合する?

[[396127]]著者: Ben Dickson はソフトウェア エンジニアであり、テクノロジー...

人工知能はドローンの将来にどのような影響を与えるのでしょうか?

人工知能の破壊的な可能性を解き放ち、それがドローンの未来をどのように変えるのかを探ります。常に進化を...

推理力が2倍にアップ!プリンストン大学と北京大学の卒業生がロング「メデューサ」を提供、33Bモデルは13Bと同等の速さ

LLM アーキテクチャに固有のメモリ制限により、生成は遅く、コストがかかります。この点に関して、多く...

Github のデータサイエンスと機械学習のリポジトリ トップ 10

この記事では、データサイエンスと機械学習の愛好家にとって最も役立つ Github リポジトリをいくつ...

人工知能は医療の未来をどう変えるのか

この病気の症状の多くは心配なものであり、めまいや不安感から始まることもあります。心臓のあたりがバクバ...

Meta AI が 3 つのテキストレス NLP 論文を連続して公開: 音声生成に対する究極の答えか?

日常のコミュニケーションでは、対話の効果を高めるために、口調、感情表現、間、アクセント、リズムなどの...

...

インターネットの価値観を修正するガバナンスアルゴリズム

最近、中国サイバースペース管理局は「インターネット情報サービスアルゴリズム推奨管理規則(草案)」(以...