基本的なプログラミングアルゴリズムを簡単に習得する(I)

基本的なプログラミングアルゴリズムを簡単に習得する(I)

[[121968]]

作者は長い間ブログを更新していませんでした。その理由の一つは、開発したプロジェクトで使用されている技術がすべて古い技術であり、私が接触した知識はすべて業界のロジックプロセスであるため、自分で要約しただけで共有しなかったことです。もう 1 つの理由は、現在 C++ 言語と基本的なコンピューター知識 (アルゴリズムなど) を再学習しているところです。

次のコードは C++ コードです。早速本題に入りましょう。

基本的なプログラミングアルゴリズム(I)

基本的なプログラミングアルゴリズム(II)

基本的なプログラミングアルゴリズム(III)

バイナリ検索

バイナリ検索とも呼ばれます。

使用条件:注文済みセット。

アルゴリズムの考え方: 最初に検索対象のレコードが配置されている範囲 (間隔) を決定し、その後、レコードが見つかるか見つからないかになるまで徐々に範囲を狭めていきます。

ポイントは、中間の位置に記録されたキーワードを指定された値と比較することです。指定された値より大きい場合(ここでは、セットが小さいものから大きいものに配置されていると仮定します)、間隔の範囲を狭め(セットの開始->中間の前のポジション)、間隔の中間の位置に記録されたキーワードを指定された値と比較し、位置が見つかるか見つからないかになるまでサイクルを繰り返します。

プログラミング例: 整数データ int a[10]={1,5,10,13,17,23,65,77,81,93};

(1) これは再帰です(ここでの判断条件の誤りを指摘してくれた仲間のユーザーzddに感謝します。これはif(min>max)に変更する必要があります)

  1. //二分探索 
  2. //配列は特定の順序でなければなりません 
  3. //パラメータ: ***、最小値、ターゲット (パラメータの型は整数)  
  4. intバイナリサーチ( int最小値、 int最大値、 int数値)
  5. {
  6. min==maxの場合は-1 を返します
  7. int中間 = (最小 + 最大) / 2;
  8. if (a[mid]==num)midを返します
  9. elseif(a[mid]<num)
  10. {
  11. BinarySearch(mid+1,max,num) を返します
  12. }
  13. それ以外 
  14. {
  15. BinarySearch(min,mid-1,num) を返します
  16. }
  17. }

(2)非再帰的

  1. //非再帰アルゴリズム 
  2. int BinarySearch_F( int数値)
  3. {
  4. 整数最小値=0;
  5. 整数最大値=9;
  6. 整数中間;
  7. (最小<=最大)
  8. {
  9. 中間=(最小+最大)/2;
  10. if (a[mid]==num)midを返します
  11. elseif(a[mid]>num)max=mid-1;
  12. それ以外の場合はmin=mid+1;
  13. }
  14. -1 を返します
  15. }

パフォーマンス分析: 時間計算量 O(logn)

挿入ソート

使用条件: 同等のサイズのコレクション。

アルゴリズムのアイデア: ソートされた順序付きシーケンスにレコードを挿入して、レコード数が 1 増加した新しい順序付きシーケンスを取得します。挿入するレコードは、すでにソートされたシーケンスと順番に比較されます。シーケンス番号が挿入するレコードより大きい場合は、挿入するレコードより小さいシーケンスが見つかるまでシーケンスを 1 つ戻します。このとき、シーケンスの次の位置に挿入され、すべての位置が埋まるまで上記の操作が繰り返されます。

プログラミング例: int b[10]={77,1,65,13,​​81,93,10,5,23,17}でソートする

  1. // ソートを挿入 
  2. //ここでtempはセンチネルの位置です 
  3. //幼少期から成人期まで 
  4. void挿入ソート() {
  5. 整数温度;
  6. 整数j;
  7. ( int i=1;i<10;i++)の場合{
  8. temp = b [i];
  9. (j=i-1;j>=0;j--)の場合{
  10. b[j]>tempの場合{
  11. b[j+1] = b[j];
  12. }
  13. それ以外{
  14. 壊す;
  15. }
  16. }
  17. b[j+1] = 一時;
  18. }
  19. cout<< "ソートは次のようになります:" ;
  20. ( int i=0;i<10;i++)の場合{
  21. cout<<b[i]<< "" ;
  22. }
  23. cout<<endl;
  24. }

パフォーマンス分析: 時間計算量 O (n^2)

バイナリ挿入ソート

使用条件: 同等のサイズのコレクション。

アルゴリズムの考え方: 基本的な考え方は、単純な挿入ソートと似ています。唯一の違いは、挿入位置を見つけることです。単純な挿入ソートでは、順次比較を使用します。ここではバイナリ挿入ソートが改良され、順次検索がバイナリ検索に改良されています。

プログラミング例: int b[10]={77,1,65,13,​​81,93,10,5,23,17}でソートする

  1. voidバイナリ挿入ソート() {
  2. int温度、最小、最大、中間; int j;
  3. ( int i=1;i<10;i++)の場合{
  4. 最小=0;最大=i-1;
  5. temp = b [i];
  6. (最小<=最大) {
  7. 中間=(最小+最大)/2;
  8. b[mid]>tempの場合{
  9. 最大値=中間-1; }
  10. そうでない場合{ min=mid+1;
  11. }
  12. }
  13. (j=i-1;j>=max+1;j--)の場合{
  14. b[j+1] = b[j];
  15. }
  16. b[max+1] = 温度;
  17. }
  18. cout<< "ソートは次のようになります:" ;
  19. ( int i=0;i<10;i++)の場合{
  20. cout<<b[i]<< "" ;
  21. }
  22. cout<<endl;
  23. }

パフォーマンス分析: 時間計算量 O (n^2)

ここでの時間計算量は単純な挿入ソートと同じですが、挿入位置を見つけるために使用される比較の数は大幅に削減されます。

原文: http://www.cnblogs.com/couhujia/archive/2011/03/23/1991110.html

<<:  基本的なプログラミングアルゴリズムを簡単にマスターする(パート2)

>>:  ヒープソートアルゴリズムの普及チュートリアル

ブログ    

推薦する

フォーブス誌の2020年AIに関するトップ10予測: 人工知能はますます「疎外」されつつある

人工知能 (AI) は間違いなく 2010 年代のテクノロジーのテーマであり、新しい 10 年が始ま...

NIOはまたしても窮地に陥った!運転支援の責任は誰が負うべきでしょうか?

[[417840]]運転支援機能がまた事故を起こした。昨日、「Meiyihao」という公開アカウン...

人工知能は企業の組織化の方法をどのように変えるのでしょうか?

[[184562]]企業への人工知能の浸透はまだ始まったばかりですが、すでにビジネスリーダーたちは...

比較分析に基づく人工知能技術の革新の道筋に関する研究

1. はじめに人工知能(AI)技術は1950年代に誕生し、現在では最も最先端かつ最も普及しているハイ...

「コーチ」はとても優しくて合格率も高いです!上海に「無人運転訓練」が登場。試してみませんか?

運転免許試験を受けるとき、2番目の科目で行き詰まっていませんか?コーチに「支配される」ことへの恐怖は...

Amazon Rekognition の紹介

Amazon Rekognition を使用すると、アプリケーションに画像およびビデオ分析機能を簡単...

...

新しいマルチモーダル大型モデルがリストを独占!画像とテキストの混合入力をサポートしているので、知識がわからなくても学習できます

マルチモーダル大型モデルファミリーに新しいメンバーが加わりました!複数の画像とテキストを組み合わせて...

2021年の量子コンピューティング研究開発の現状と将来展望

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

スマートコミュニティにおける人工知能応用の5つのシナリオ

モノのインターネット、クラウド コンピューティング、ビッグ データ、人工知能は、概念からアプリケーシ...

2021年にITリーダーがAIと機械学習に期待すること

毎年末と翌年の初めに、IT 思想リーダーが翌年のテクノロジー、革新的なサービス、業界の進歩などの開発...

新しいモデルは99%の精度で、ChatGPTによって生成されたテキストコンテンツを認識できます。

IT Homeは11月8日、sciencedirectに掲載された最新の論文によると、科学者は20...

ChatGPT以外の14の大規模言語モデル

翻訳者 | 李睿レビュー | Chonglou今日、多くの企業幹部は人工知能を将来の発展方向と見てお...

インターネットの前半は終わり、未来は人工知能の時代へ

少し前、ロシアのプーチン大統領は「人工知能 - 21世紀の主要技術」イベントに出席した際、人工知能ロ...

2050年に「電子的不死」は達成されるのか?計画が鍵

海外メディアの報道によると、有名な未来学者イアン・ピアソン博士は最近、今後数十年以内に、人間は思考と...