c++关于这个函数的几个问题,请高手来指教。
voidSample::funSort(Sample&s){inti,j,k,temp;for(i=0;i<Max;i++){k=i;for(j=i+1;j<Max;j+...
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++) {
k = i ;
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[k]) k = j ;
temp = s.A[i] ;
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
1.第二个for中有多条语句,为什么没有大括号?同样,if里面也有多条语句,竟然也没加括号。
2.这段程序我觉得应该简化成void Sample::funSort(Sample &s)
{
int i, k, temp ;
for(i = 0 ; i < Max ; i++) {
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[j])
temp = s.A[i] ;
s.A[i] = s.A[j] ;
s.A[j] = temp ;
}
}不是更好?
3.我认为第一个for中i应该<max-1更合理。
请内行人解释一下,谢谢。 展开
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++) {
k = i ;
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[k]) k = j ;
temp = s.A[i] ;
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
1.第二个for中有多条语句,为什么没有大括号?同样,if里面也有多条语句,竟然也没加括号。
2.这段程序我觉得应该简化成void Sample::funSort(Sample &s)
{
int i, k, temp ;
for(i = 0 ; i < Max ; i++) {
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[j])
temp = s.A[i] ;
s.A[i] = s.A[j] ;
s.A[j] = temp ;
}
}不是更好?
3.我认为第一个for中i应该<max-1更合理。
请内行人解释一下,谢谢。 展开
3个回答
展开全部
程序修改如下
你的问题我慢慢回答 啊
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++)
{
k = i ;
for(j = i + 1; j < Max ; j++)
{
if(s.A[j] > s.A[k])
{
k = j ;
temp = s.A[i] ;
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
}
}
1.第二个for中有多条语句,为什么没有大括号?同样,if里面也有多条语句,竟然也没加括号。
的确如此,已经修改
2.这段程序我觉得应该简化成void Sample::funSort(Sample &s)
{
int i, k, temp ;
for(i = 0 ; i < Max ; i++) {
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[j])
temp = s.A[i] ;
s.A[i] = s.A[j] ;
s.A[j] = temp ;
}
}不是更好?
不行,首先,你的声明中少了j。程序中k的使用起到一个临时的变量,作用是防止i和j的意外变化,和temp的作用相似
3.我认为第一个for中i应该<max-1更合理。
数组是从0开始的,小于max刚好是0到max-1,一共max个元素。如果是小于max-1 ,岂不是少了一个??
请内行人解释一下,谢谢。
你的问题我慢慢回答 啊
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++)
{
k = i ;
for(j = i + 1; j < Max ; j++)
{
if(s.A[j] > s.A[k])
{
k = j ;
temp = s.A[i] ;
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
}
}
1.第二个for中有多条语句,为什么没有大括号?同样,if里面也有多条语句,竟然也没加括号。
的确如此,已经修改
2.这段程序我觉得应该简化成void Sample::funSort(Sample &s)
{
int i, k, temp ;
for(i = 0 ; i < Max ; i++) {
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[j])
temp = s.A[i] ;
s.A[i] = s.A[j] ;
s.A[j] = temp ;
}
}不是更好?
不行,首先,你的声明中少了j。程序中k的使用起到一个临时的变量,作用是防止i和j的意外变化,和temp的作用相似
3.我认为第一个for中i应该<max-1更合理。
数组是从0开始的,小于max刚好是0到max-1,一共max个元素。如果是小于max-1 ,岂不是少了一个??
请内行人解释一下,谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的理解是正确的i<max-1更合理,但要在 if后加个大括号
void Sample::funSort(Sample &s)
{
int i, k, temp ;
for(i = 0 ; i < Max ; i++) {
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[j])
{//加的
temp = s.A[i] ;
s.A[i] = s.A[j] ;
s.A[j] = temp ;
}//加的
}
关于源程序你可以这样理解:
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++) {
k = i ;
for(j = i + 1; j < Max ; j++)
{//加的
if(s.A[j] > s.A[k]) k = j ;相当于一个记号,记下比s.A[i]元素大的角标
}//加的
temp = s.A[i] ;
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
void Sample::funSort(Sample &s)
{
int i, k, temp ;
for(i = 0 ; i < Max ; i++) {
for(j = i + 1; j < Max ; j++)
if(s.A[j] > s.A[j])
{//加的
temp = s.A[i] ;
s.A[i] = s.A[j] ;
s.A[j] = temp ;
}//加的
}
关于源程序你可以这样理解:
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++) {
k = i ;
for(j = i + 1; j < Max ; j++)
{//加的
if(s.A[j] > s.A[k]) k = j ;相当于一个记号,记下比s.A[i]元素大的角标
}//加的
temp = s.A[i] ;
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有加大括号就是它的算法精辟所在,原程序等价于
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++) {
k = i ;
for(j = i + 1; j < Max ; j++) {
if(s.A[j] > s.A[k]) k = j ;
temp = s.A[i] ;
}//for 循环包含 if ,if 的作用域到这一行为止,下面的两行要参加外层的循环
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
void Sample::funSort(Sample &s)
{
int i, j, k, temp ;
for(i = 0 ; i < Max ; i++) {
k = i ;
for(j = i + 1; j < Max ; j++) {
if(s.A[j] > s.A[k]) k = j ;
temp = s.A[i] ;
}//for 循环包含 if ,if 的作用域到这一行为止,下面的两行要参加外层的循环
s.A[i] = s.A[k] ;
s.A[k] = temp ;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询