プログラマー試験ノート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コストの簡単な分析

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

ブログ    

推薦する

...

...

ヘルスケア市場におけるサービスロボットは2027年までに32億ドルに達すると予想

[[434302]]ヘルスケア分野におけるロボットへの投資の増加が、医療サービスロボットの開発を促進...

...

機械学習アルゴリズムの基礎知識

利用できるアルゴリズムは多数あります。難しいのは、さまざまな種類の方法があり、それらの方法に拡張もあ...

ディープラーニングの面接で知っておくべきこと

[[208646]]この記事は、「ディープラーニングの面接で知っておくべきことは何ですか」という質問...

人工知能の導入により AR/VR はどこへ向かうのでしょうか?

[51CTO.com からのオリジナル記事] 2015 年 1 月、Microsoft は長年「革...

生体認証に関する最大の誤解は何ですか?

セキュリティ分野で広く使用されている技術の中で、生体認証技術のプライバシー問題が最も懸念されています...

第2回解析アルゴリズムコンテストが開始され、技術専門家があなたの参加を待っています

データスキルについてまだ不安がありますか?アルゴリズムの革新を適用できる場所はありませんか?こんなに...

データ サイエンティスト向けの自動化された機械学習ライブラリ 20 選

[[358537]] 「機械学習の究極の目標の 1 つは、特徴エンジニアリング プロセスをますます自...

2022 年に予測されるロボット技術のトレンド トップ 10

COVID-19パンデミックは、物流やスーパーマーケットなどの分野に問題と機会の両方をもたらしまし...

...

人工知能の旅:プロトタイピングは始まりに過ぎない

国内外で人工知能や機械学習のチームが大きな成果のニュースを共有し続けているのをよく見かけますが、実用...

FlashOcc: 占有率予測への新しいアプローチで、最先端の精度、効率、メモリ使用量を実現します。

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

集団雷雨!自動化された攻撃により、主要な言語モデルを1分で脱獄できる

大規模な言語モデル アプリケーションが直面する 2 つの主要なセキュリティ上の脅威は、トレーニング ...