#include<stdio.h>
#define N 40
int Readscore(int score[]); /*成绩输入函数原型*/
void Printscore(int score[],int n);/*成绩输出函数原型*/
void AscendingSort(int a[],int n);/*升序排序函数原型*/
void DescendingSort(int a[],int n);/*降序排序函数原型*/
void Swap(int *x,int *y);/*两数交换函数原型*/
int main()
{
int score[N],n;
int order;/*值为1表示升序排序,值为2表示降序排序*/
n=Readscore(score);
printf("Total students are %d\n",n);
printf("Enter 1 to sort in ascending order:\n");
printf("Enter 2 to sort in desceding order:\n");
scanf("%d",&order);
printf("Data items in oringinal order:\n");
Printscore(score,n);
if (order==1)
{
AscendingSort(score,n);
printf("Data items in ascending order\n");
}
else
{
DescendingSort(score,n);
printf("Data items in descenging order\n");
}
Printscore(score,n);
return 0;
}
int Readscore(int score[])
{
int i=-1;
do{
i++;
printf("Input score:");
scanf("%d",&score[i]);
}while(score[i]>=0);
return i;
}
void Printscore(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%4d",score[i]);
}
printf("\n");
}
void AscendingSort(int a[],int n)
{
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k])
{
k=j;
}
}
if(k!=i)
{
Swap(&a[k],&a[i]);
}
}
}/*选择法实现数组的降序排序 */
void DescendingSort(int a[],int n)
{
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]>a[k])
{
k=j;
}
}
if(k!=i)
{
Swap(&a[k],&a[i]);
}
}
}
void Swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
选择法排序,既能升序排序,又能降序排序(含指针)
最新推荐文章于 2024-09-25 09:50:19 发布