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

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

ブログ    
ブログ    

推薦する

...

人工知能は私たちの仕事を奪うわけではないが、雇用方法を変えている

[[255694]]プロフェッショナルソフトウェア開発における人工知能 (AI) の急速な発展により...

アルゴリズムの大きな進歩! AIニューラルネットワークは量子システムをシミュレートする

[[269803]]最近、研究者たちはニューラルネットワークに基づく新しいアルゴリズムを使用して量子...

Yisaqi 9周年: RPA製品の進化を振り返る

現在、国内RPA市場の競争は激化しており、多くのメーカーが独自のRPA製品やブランドを立ち上げていま...

クラウドがチャットボットの体験をどのように変えるか

チャットボットの無限ループや同じ質問の繰り返しにイライラしていませんか? これは顧客にとってよくある...

人工知能が製造業に与える4つの影響

人工知能はあらゆるところに存在し、私たちは気づかないうちに日常生活でそれを使用しています。人工知能は...

AI エージェントに協力と競争を教えましょう。最初の大規模マルチエージェントフレームワークであるCAMELは3.6kのスターを獲得しました

「どんな魔法が私たちを賢くするのでしょうか?魔法は魔法がないことです。知性の力は、単一の完璧な原理か...

博士課程新卒者の年収は80万元。AI業界で就職するのは本当にそんなに簡単なのでしょうか?

[[251000]]最近、人工知能(AI)業界が活況を呈しており、この分野の卒業生にとって有望な就...

Ant Financial が SOFAJRaft をオープンソース化: 製品グレードの Java Raft アルゴリズム ライブラリ

SOFAJRaftとは何ですか? SOFAJRaft は、 Raftコンセンサス アルゴリズムに基づ...

Minecraft でニューラル ネットワークを構築し、操作プロセスを明確に表示する | オープン ソース

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

...

ブロックチェーンが人工知能に役立つ10の方法

ここでは、ブロックチェーンが AI を支援する 10 の方法と、それがもたらすメリットについて説明し...

人工知能が人間に危害を加えた場合、誰が責任を負わされるのでしょうか?

[[351390]]コインの表裏のように、技術の進歩は人々の生産と生活を促進する一方で、深刻な実際...

PyTorch と TensorFlow の最新バージョンを比較すると、2021 年にはどちらを選択しますか?

ディープラーニングが再び認知されて以来、多くの機械学習フレームワークが登場し、研究者や業界の専門家の...