C++ 4 番目のチェックイン (エントリからデビューまでの配列)


序文

例: 人工知能の継続的な発展に伴い、機械学習の技術はますます重要になっています. 多くの人が機械学習を学び始めています. この記事では、機械学習の基本的な内容を紹介します。

ヒント: 以下はこの記事の本文であり、次のケースは参考用です。

1. 配列の知識ポイント

  1. 配列宣言: type 配列名 [サイズ]
    _______________ 長さ size-1 : [0,1…size-1]

    #例: int a [3] ;
    __________ char b [5] ;

  2. 配列の初期化__は
    サイズを示すかどうかを指定できます。C
    ++ では、範囲外の配列はエラーを報告しません。注意深く確認してください。

#例: int a[5] = {1,3,5,7,9};
#または: int b[] = {2,4,6,8,10};

  1. 配列添字変数 (a [n])
    添字変数は、個別に割り当てることも、直接計算する
    こともできcin>> で入力し、cout<< で出力することができます
#include<iostream>
using namespace std;
main()
{
    
    
	int a[5],i,sum;
	double avg;
	for(i=0;i<=5;i++){
    
    
		cout<<"a["<<i<<"]=";
		cin>>a[i];
	}
	cout<<endl;
	
	for(i=0;i<=5;i++){
    
    
		cout<<"a["<<i<<"]=";
		cout<<a[i]<<"\t"; 
	} 
	
	for(i=0;i<=5;i++){
    
    
		sum+=a[i]; 
	} 
	cout<<endl<<"sum="<<sum<<endl;
	
	avg=sum/5;
	cout<<"avg="<<avg<<endl;
 } 

注: ' ' 単一引用符" " 二重引用符は異なる目的を持ち、" " 二重引用符は文字を表し、' ' 単一引用符は文字化けを出力するだけです。
ここに画像の説明を挿入

2. 配列のソートと検索

1. 最大値を求めるトラバーサル法

コードは以下のように表示されます。

#include<iostream>
using namespace std;
main(){
    
    
int a[8]={
    
    16,47,29,65,83,56};
int max=0,i;
for(i=0;i<8;i++){
    
    
	if(a[max]<a[i]) 
	  max=i;
}	
cout<<"max="<<a[max];
}

2. 要素を見つけるための二分法

コードは次のとおりです(例)。

#include<iostream>//有问题的代码
using namespace std;
main()
{
    
    //程序功能 :排序并查找元素 
  int a[5],low,high,mid;
  int i,cir,count;
  	
  for(i=0;i<5;i++){
    
    
	cout<<"a["<<i+1<<"]=";
	cin>>a[i];//输入 
  }	
  
  while(count>=10)
  {
    
    
  	for(i=1;i<5;i++)
	  {
    
    
  		if(a[i]<a[i-1])
		  {
    
    
  			cout<<a[i]<<"<"<<a[i-1]<<endl;
  			cir=a[i+1];
			a[i+1]=a[i];
  			a[i]=cir;
  			cout<<endl<<"i="<<i<<endl;
  			break;
		  } 
		  count+=1; 
	  }
	  cout<<endl<<"i="<<i<<endl;
  }
  cout<<"a[0]="<<a[0]<<endl;
  cout<<"a[1]="<<a[1]<<endl;
  cout<<"a[2]="<<a[2]<<endl;
  cout<<"a[3]="<<a[3]<<endl;
  cout<<"a[4]="<<a[4]<<endl;
}

継続的な努力とデバッグの結果、正しいコードを書きました。

#include<iostream>
#define size 5
using namespace std;
main()
{
    
    
 int a[5];
	
 //功能1:数组数据的输入和输出 
  for(int i=0;i<5;i++)
   {
    
    
	cout<<"a["<<i<<"]:\n";
    cin>>a[i];
   }
  cout<<"a:";
  for(int i=0;i<5;i++)
	  cout<<i<<":\t"<<a[i]<<endl ;
	    
	//功能2:排序(从小到大)
	int t;//t为中间变量 
  for(int i=0;i<4;i++)
   {
    
    
  	for(int j=i+1;j<5;j++)
  	 {
    
    
  	  if(a[j]<a[i])
		{
    
    
		 cout<<"a[j]="<<a[j]<<"\t";
		 cout<<"a[i]="<<a[i]<<endl;
		 //记住:是将后面的直赋值给前面,a=2 
		 t=a[j];
		 a[j]=a[i];
		 a[i]=t;
		 	
		 cout<<"change a[j]="<<a[j]<<"\t";
		 cout<<"change a[i]="<<a[i]<<endl;
			}	
	  }
    }	 
   for(int i=0;i<5;i++)
	cout<<i<<":\t"<<a[i]<<endl ;
	
 //排序完毕,开始二分查找
 int low,high,mid;
 int value,find;
 low=0,high=size;
 mid=(high+low)/2;
 
 cout<<"value=";
 cin>>value;
 
 while(low<=high&&find==0)
  {
    
    
   	mid=(high+low)/2;
   	
   	cout<<endl<<"high=\t"<<high<<endl;
   	cout<<"low=\t"<<low<<endl;
   	cout<<"mid=\t"<<mid<<endl;
   	cout<<"a[mid]\t"<<a[mid]<<endl;
   	cout<<"value=\t"<<value<<endl;
   	cout<<"find=\t"<<find<<endl;
   	if(a[mid]==value)
   	find=1;
   	
   	else if(a[mid]>value)
   	 {
    
    
   	  high=mid-1;
	 }
	 
	else if(a[mid]<value)
	 {
    
    
	 	low=mid+1;
	  } 
  } 
   
  if(find==1)
    cout<<"找到了!目标值在"<<mid<<"位上\n";
  else
    cout<<"找不到QAQ"<<"\n";  
	  
}

要約する

この記事の要約は次のとおりです。
二分探索は私たちが遭遇したアルゴリズムであるため、今回は配列から始めます。ということで、皆さんも自分の力を頼りに、授業後にまた書いていただければと思います(二分探索は本当に難しいので、QAQ)
次回のチェックインの内容:ポインタ変数。乞うご期待!

おすすめ

転載: blog.csdn.net/m0_53590279/article/details/115464210