注册 登录
编程论坛 C++教室

c++排序程序问题,各位高手帮忙给我看看呢,小弟多谢!!

shifengfei5 发布于 2009-10-27 14:38, 999 次点击
#include <iostream>

using namespace std;

int main()
{
    int a[7]={1,3,41,2,6,20,8};
    for(int i=0;i<7;i++){
        int min=a[i];
        for(int j=i;j<7;j++){
            if(a[j]<min)min=a[j];
        }
    a[i]=min;
    }
    for(int k=0;k<7;k++){
        cout<<a[k]<<"  ";
        }

}
为s什么排序出现错误啊,那位高手大哥帮我看看呢!!!
12 回复
#2
supermat2009-10-27 15:14
这是调过以后的,你看看!
#include <iostream.h>
//using namespace std;
 
void main()
{
    int a[7]={1,3,41,2,6,20,8};
    for(int i=0;i<7;i++)
    {
        int min=a[i],t;
        for(int j=i+1;j<7;j++)
        {
            if(a[j]<min)
            {
                t=min; //你的问题出现在此处
                min=a[j];
                a[j]=t;
            }
        }
        a[i]=min;
    }
    for(int k=0;k<7;k++)
    {
        cout<<a[k]<<"  ";
    }
}
#3
shifengfei52009-10-27 22:00
回复 2楼 supermat
那为什么直接用if(a[j]<min)min=a[j];这条语句就不行呢?
#4
newCpp2009-10-27 22:27
程序代码:
#include <iostream>
 
using namespace std;
 
int main()
{
    int z;
   int a[7]={1,3,41,2,6,20,8};
for(int i=0;i<7;i++)
{
    for(int j=0;j<7;j++)
    {
        if(a[i]>a[j])
        {
        z=a[i];
        a[i]=a[j];
        a[j]=z;
        }
    }
 
}
for(int k=0;k<7;k++)
{
    cout<<a[k]<<" ";
}
    return 0;
}
这种排序方法O(∩_∩)O哈哈~,看看还算蛮容易记住的哈!!
仔细看看哈!
#5
songxj322009-10-28 09:23
看过
#6
wangwagn2009-10-28 13:05
汗 。。。
#7
supermat2009-10-28 16:53
回复 3楼 shifengfei5
因为此处需要的是“交换”,不是“赋值”
#8
shifengfei52009-10-28 19:11
回复 7楼 supermat
懂了。多谢多谢
#9
shifengfei52009-10-28 19:12
多谢各位帮忙!!!
#10
Ckay2009-10-29 03:09
看过
#11
笑笑乐2009-10-31 17:09
你找到最小值之后,没有交换两个数的值,这样肯定是会错的!
#12
cherryhu2009-10-31 19:15
你问题出在前面的值被覆盖后没保存
#13
xuxey2010-01-20 09:14
yun
1