首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

简单的排序有关问题

2012-02-06 
简单的排序问题voidmenu::ArrayMark(){intkfor(inti0i maxi++){kifor(intji+1j maxj++)if(data

简单的排序问题
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;
}
怎么每次运行后相同的数据总有不同的排名结果!
请问那个高手可以解答吗?


[解决办法]
用STL的一个sort()就可以了,何必自己造轮子
[解决办法]
#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);//不知道干嘛的

[解决办法]
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);
[解决办法]
> > > > 用STL的一个sort()就可以了,何必自己造轮子


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

热点排行