プログラマー試験ノート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 つの AI ツール

アレックス・オメイヤー翻訳者 | 陳俊レビュー | Chonglou人工知能(AI)の急速な進化と発...

...

ChatGPT のパフォーマンスが最大 214% 向上し、7 つのグラフが更新されました。 IDEA、HKUST GuazhouなどがToG思考マップを提案

大きなモデルは良いですが、「深刻なナンセンス」の問題をどのように解決するのでしょうか?金融、法律、医...

人工知能がサービスと運用管理を改善する10の方法

ヨーロッパの多国籍通信会社は、BMC の Helix Chatbot を標準化して、全部門の 120...

Keras を使用して、30 行未満のコードで最初のニューラル ネットワークを記述します。

[51CTO.com クイック翻訳] 私が初めて AI に触れたときのことを振り返ると、いくつかの...

あなたの AI は規制に対応できる準備ができていますか?

現在、人工知能 (AI) に関する同様の規制が世界中の複数の地域で施行され始めており、GDPR に関...

スタンフォード大学は対照的嗜好学習を提案:強化学習なしで人間のフィードバックから学習する

人間によるフィードバックによる強化学習 (RLHF) は、モデルを人間の意図に合わせるための一般的な...

ディープラーニングを用いた医療画像解析: ファイル形式

[[198733]]今年 3 月に開催された NVIDIA の GTC 2017 カンファレンスでは...

...

ユーザーエクスペリエンスは過去のものになりました。AIは国民、さらには社会の視点から問題を考える必要があります。

今日、テクノロジーの巨人とその AI ベースのデジタル プラットフォームおよびソリューションは、世界...

マイクロソフトはIBMとアマゾンに続き、警察への顔認識技術の販売を拒否

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

第四次産業革命:人工知能

人工知能 (AI): 私たちの日常生活、生き方、他者との関わり方に根本的な変化がもたらされるのは、第...

トランスフォーマーに挑むマンバの起源とは?著者の博士論文はSSMの進化の道筋を明らかにしている

大型模型の分野では、トランスフォーマーが全容を一手に引き受けています。しかし、モデルのサイズが拡大し...

興味深く実用的なオープンソース人工知能プロジェクトトップ10

皆さんは多くの人工知能プロジェクトを見たり使用したりしたことがあると思いますが、そのほとんどは非常に...