求C++大神解释这个函数的语句!
请大神麻烦解释一下这个函数每条语句的意思,谢谢了!voidsort(studentstu[],intlen){studentm;inti,j,k;for(i=0;i<le...
请大神麻烦解释一下这个函数每条语句的意思,谢谢了!
void sort(student stu[],int len)
{
student m;
int i,j,k;
for(i=0;i<len-1;i++)
{
k=i;
for(j=i+1;j<len;j++)
if(strcmp(stu[j].num,stu[k].num)>0)
k=j;
if(i!=k)
{m=stu[i];stu[i]=stu[k];stu[k]=m;}
}
} 展开
void sort(student stu[],int len)
{
student m;
int i,j,k;
for(i=0;i<len-1;i++)
{
k=i;
for(j=i+1;j<len;j++)
if(strcmp(stu[j].num,stu[k].num)>0)
k=j;
if(i!=k)
{m=stu[i];stu[i]=stu[k];stu[k]=m;}
}
} 展开
展开全部
void sort(student stu[],int len)//这是一个选择排序算法
{
student m;
int i,j,k;
for(i=0;i<len-1;i++)
{
k=i; //k是指向num最大值得下标
for(j=i+1;j<len;j++)
if(strcmp(stu[j].num,stu[k].num)>0)
k=j; //这里总是保存最大的下标
if(i!=k) //如果下标改变了就交换
{m=stu[i];stu[i]=stu[k];stu[k]=m;}
}
}
展开全部
冒泡法排序,从大到小排序
定义变量不解释
两重循环,第一重循环,从第一个数到倒数第二个数,(因为剩下最后一个数最小的话,就不用排了)
然后将这个数和之后的每一个数比较,如果有一个数比这个数大,就用这个数替代原来的数,继续做比较。
结果每次是得到剩下的数中最大的数,
这样就完成了排序
定义变量不解释
两重循环,第一重循环,从第一个数到倒数第二个数,(因为剩下最后一个数最小的话,就不用排了)
然后将这个数和之后的每一个数比较,如果有一个数比这个数大,就用这个数替代原来的数,继续做比较。
结果每次是得到剩下的数中最大的数,
这样就完成了排序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void sort(student stu[],int len) //子函数有一个int型参数和一个student型结构体参数
{
student m; 定义一个student结构体m
int i,j,k; 定义三个int型 i,j,k
for(i=0;i<len-1;i++) for循环 i 从0开始一直循环到i=len-2
{
k=i; 将i数值赋予k
for(j=i+1;j<len;j++) for循环同上
if(strcmp(stu[j].num,stu[k].num)>0) if判断语句 如果stu[j].num大于stu[k].num则继续执行下面一句语句,否则跳过下面一句语句
k=j;
if(i!=k) if判断i如果不等于k则执行下面语句,否则不执行
{m=stu[i];stu[i]=stu[k];stu[k]=m;} 这句就是stu[i]的值和stu[k]的值交换
}
}
我有说的不明白的继续追问吧
{
student m; 定义一个student结构体m
int i,j,k; 定义三个int型 i,j,k
for(i=0;i<len-1;i++) for循环 i 从0开始一直循环到i=len-2
{
k=i; 将i数值赋予k
for(j=i+1;j<len;j++) for循环同上
if(strcmp(stu[j].num,stu[k].num)>0) if判断语句 如果stu[j].num大于stu[k].num则继续执行下面一句语句,否则跳过下面一句语句
k=j;
if(i!=k) if判断i如果不等于k则执行下面语句,否则不执行
{m=stu[i];stu[i]=stu[k];stu[k]=m;} 这句就是stu[i]的值和stu[k]的值交换
}
}
我有说的不明白的继续追问吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询