无锡三只松鼠 实体店:C++程序设计!
来源:百度文库 编辑:高校问答 时间:2024/10/01 22:01:50
2、输入一个学生的成绩,将此成绩按照排序规律插入已排好序的学生成绩数组。
用冒泡排序很容易
void f(int *score,int n,int,char style)
{
int i,j,t,score[100];
if(style='a')
{
for(i=0;i<n;i++)
for(j=0;j<i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
else if(style='d')
{
for(i=0;i<n;i++)
for(j=0;j<i;j++)
if(a[j]<a[j+1]) /*实际上就这里变了而已*/
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
}
void Sort(int, int[], char);
int main(int argc, char* argv[])
{
int score[100];
int n;
char c;
cout <<"请输入学生个数:"<<endl;
cin >>n;
cout <<"输入a(升序) or b(降序)"<<endl;
cin >>c;
cout <<"请输入个学生成绩:"<<endl;
for(int i = 0; i < n; i++)
cin >>score[i];
Sort(n,score,c);
cout <<"输入新的学生成绩:";
cin >>score[n];
Sort(n+1,score,c);
return 0;
}
void Sort(int n, int score[], char style)
{
int temp;
if(style == 'a')
{
for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j <= n - 1; j++)
{
if(score[i] > score[j])
{
temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
for (int m = 0; m < n; m++)
cout << score[m] <<" ";
}
else if(style == 'b')
{
for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j <= n - 1; j++)
{
if(score[i] < score[j])
{
temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
for (int m = 0; m < n; m++)
cout << score[m] <<" ";
}
}
2题插入用2分法速度快一些,先和中间的比较