本人是一个才学c++没多久的小白,无师自通。是看《C++ Primer plus》学的。
但是,上面对算法只是一笔带过,只提到了递归。又看信息奥赛的同学们全都在学算法。
于是,我决定了。开始算法的学习!!!
选择排序是最基础的排序算法,下面是一个实例:从小到大排序
#include <iostream>
using namespace std;
int main()
{
int a[101];
int k,n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n-1;i++)
{ k=i;
for(int j=i+1;j<=n;j++)
if(a[k]>a[j])k=j;
if(k!=i)
{
int t;
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
我开始研究了起来这段代码.但是!!!
中间的循环看不懂啊!
cin>>a[i];
for(int i=1;i<=n-1;i++)
{ k=i;
for(int j=i+1;j<=n;j++)
if(a[k]>a[j])k=j;
if(k!=i)
{
int t;
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
这个变量以及数组看得我有点懵。
于是我陷入了沉思。。。