就是DataSort函数,有较大的问题,代码注释中已经指出,求给最佳void DataSort(int score[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
bool swap = false;
//关键代码之一,若一轮下来无交换,swap为false,该处先假设swap为false,后面如果发生交换则输出,否则退出
for(j=0;j<n-i;j++) //这里也要改
{
if(score[j] > score[j - 1])
//我觉得你用的好像是选择排序,原本的判断条件是score[j]>score[i]
//此处应该是score[j] > score[j - 1],这才是冒泡排序
{
temp=score[j]; //这三行也要改动
score[j]=score[j - 1];
score[j - 1]=temp;
swap = true; //发现了交换,swap = true
}
}
if (swap) { //关键
printf("第 %d 趟 :", i + 1); //输出这一趟是第 i + 1 趟
int k = 0;
for (; k < n; ++k) printf("%d ", score[k]); //输出本趟结果
puts(""); //记得换行
} else return; //否则未发生交换,返回退出
}
}
|