简单的排序问题
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])//°´³É¼¨ÅÅÐò,
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一下