讨论 / 为啥最后一组总是过不了呢?
DarryRing 2016-06-02 02:54:33
点我顶贴 收藏 删除
我冒泡快排都试过了,就是不正确为什么?

#include<iostream>

#include<cstdio>

using namespace std;

typedef struct Node

{

int index;

int value;

}Node;

int N;

Node data[1001];

int sum=0;

int wait[1001];

void SORT(int s,int e)

{

Node temp;

for(int i=s;i<e;++i) // i为前值

for(int j=i+1;j<=e;++j)

{

if(data[i].value>data[j].value)

{

temp.value=data[i].value;

temp.index=data[i].index;

data[i].value=data[j].value;

data[i].index=data[j].index;

data[j].value=temp.value;

data[j].index=temp.index;

}

else if(data[i].value==data[j].value&&data[i].index>data[j].index) //判断相同情况

{

temp.value=data[i].value;

temp.index=data[i].index;

data[i].value=data[j].value;

data[i].index=data[j].index;

data[j].value=temp.value;

data[j].index=temp.index;

}

}

}

int main()

{

cin>>N;

int temp;

for(int i=1;i<=N;++i)

{

cin>>temp;

data[i].index=i;

data[i].value=temp;

}

SORT(1,N);

data[0].value=0;

for(int i=1;i<=N;++i)

{

sum+=data[i-1].value;

wait[i]=sum;

cout<<data[i].index<<" ";

}

cout<<endl;

sum=0;

for(int i=1;i<=N;++i)

sum+=wait[i];

float r=(float)sum/(float)N;

printf("%.2f\n",r);

return 0;

}

查看更多回复
提交回复