代码看不懂,请帮忙解释。

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:10:00
#include"iostream.h"
#include"iomanip.h"
void sort(int a[],int size);//将数组中的元素从大到小排列
int main()
{
int num[]={2,3,8,6,4,1,7,9l};
const int size=sizeof(num)/sizeof(int);
sort(num,size);
cout<<"排列后的数组元素"<<endl;
for(int i=0;i<size;i++)
{
cout<<setw(2)<<num[i];
}
cout<<endl;
return 0;
}
void sort(int a[],int size)
{
cout<<"原来的数组元素"<<endl;
for(int i=0;i<size;i++)
{
cout<<setw(2)<<a[i];
}
cout<<endl;

下面两个循环是怎么运行的一点都看不明白
for(int j=0;j<size;j++)
{
int min=a[j],mink=j;//先假设未排列的首元素是最小的数
for(int k=j;k<size;k++)//找到未排列的元素中最小的数
{
if(a[k]<min)
{
min=a[k];特别是这里,不明白变量代表的是什么
mink=k;
}
}

int temp=a[j];//交换两个元素 这里为什么还要交换?
a[j]=a[mink];
a[mink]

for(int j=0;j<size;j++)
{
int min=a[j],mink=j;//先假设未排列的首元素是最小的数
for(int k=j;k<size;k++)//找到未排列的元素中最小的数
{
if(a[k]<min)
{
min=a[k];如果a[k]<min,则最小的数为a[k],
mink=k; 那个最小数的序号则为k
}
}

int temp=a[j];要排序输出的啊 ,所以要换位置
a[j]=a[mink];
a[mink]=temp;
}
}

选择法排序,最简单的排序算法。找本数据结构的书好好学学。