您的位置:程序门 -> c/c++ -> c++ 语言



简单的排序问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


简单的排序问题[已结贴,结贴人:effective_person]
发表于:2007-09-12 15:18:34 楼主
void   menu::arraymark()
{
int   k;
for(int   i=0;i <max;i++)
{
k=i;
for(int   j=i+1;j <max;j++)
        if(data[j].mark> data[k].mark)//按成绩排序,
k=j;
        if(k!=i)
              exchange(data[i].rank,data[k].rank);

}
}

void   menu::exchange(int   &t,int     &   r)
{
int     c;
c=t;
t=r;
r=c;
}
怎么每次运行后相同的数据总有不同的排名结果!
请问那个高手可以解答吗?
发表于:2007-09-12 15:33:301楼 得分:0
第一次坐沙發,排序肯定是沒錯的,你注意檢查一下data是不是沒初始化
发表于:2007-09-12 15:40:542楼 得分:20
用stl的一个sort()就可以了,何必自己造轮子
发表于:2007-09-12 15:44:383楼 得分:20
#include   <cstdlib>
#include   <iostream>

using   namespace   std;
#define   max     10
void   exchange(int   &t,int     &   r)
{
int     c;
c=t;
t=r;
r=c;
}

int   main(int   argc,   char   *argv[])
{
int   data[]   =   {1,2,3,20,5,14,7,8,9,10};
int   k;
for(int   i   =   0;i <max;i++)
{
k=i;
for(int   j=i+1;j <max;j++)
{
        if(data[j]> data[k])//°&acute;&sup3;&eacute;&frac14;¨&aring;&aring;&eth;ò,
k=j;
}
        if(k!=i)
              exchange(data[i],data[k]);

}
for   (i   =   0;i <10   ;++i)
{
cout < <*(data+i) < <endl;
}
        system( "pause ");
        return   exit_success;
}

exchange(data[i].rank,data[k].rank);//不知道干嘛的
发表于:2007-09-12 15:47:174楼 得分:0
data   在构造函数中就初始化了,
data   =new   runner[max];
for(int   i=0;i <max;i++)
data[i].rank=i+1;

现在还在看数据结构还没看到stl来
发表于:2007-09-12 15:50:255楼 得分:0
exchange(data[i].rank,data[k].rank);//用来交换名次的
先前名次是按顺序排好的
只交换名次就可以了啊
发表于:2007-09-12 15:50:366楼 得分:50
bool   sort_function(   const   tdata/*data类型*/   a,   const   tdata/*data类型*/   b)
{
                bool   flag;
                if(a.mark     <   b.mark)
                {
                                flag   =     true;
                }
                else     flag   =   false;
                return   flag;
}
sort(data,   data   +   max,   sort_function);
发表于:2007-09-12 16:22:417楼 得分:0
比较的是mark,交换的是rank,如果不是笔误的话,就是这个问题了。

事实上,如果mark表示成绩,rank表示排名,那么应该交换mark而不是rank。这样得到的结果才是按mark的降序。
发表于:2007-09-12 18:29:148楼 得分:10
> > > > 用stl的一个sort()就可以了,何必自己造轮子


对于初学者,一个轮子不造怎么知道车是怎么造的?一些基本的东西还是要practice一下


快速检索

最新资讯
热门点击