配列のように見えます
序文
例: 人工知能の継続的な発展に伴い、機械学習の技術はますます重要になっています. 多くの人が機械学習を学び始めています. この記事では、機械学習の基本的な内容を紹介します。ヒント: 以下はこの記事の本文であり、次のケースは参考用です。
1. 配列の知識ポイント
-
配列宣言: type 配列名 [サイズ]
_______________ 長さ size-1 : [0,1…size-1]#例: int a [3] ;
__________ char b [5] ; -
配列の初期化__は
サイズを示すかどうかを指定できます。C
++ では、範囲外の配列はエラーを報告しません。注意深く確認してください。
#例: int a[5] = {1,3,5,7,9};
#または: int b[] = {2,4,6,8,10};
- 配列添字変数 (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)
次回のチェックインの内容:ポインタ変数。乞うご期待!