主函数调用三种排序方法
要求主函数调用三种排序方法,做了一个,但运行无结果,望能找出错误!谢谢!#include "stdio.h"
int x[10];
void read_data(int e[], int p);
void write_data(int f[], int q);
int sort1(int a[], int s);int sort2(int b[], int y);int sort3(int c[], int z);
int main()
{
int n;
printf("请选择排序方法:“1”为插入法,“2”为选择法,“3”为冒泡法");
printf("\n");
n=getchar();
read_data(x, 10);
switch(n)
{
case 1:sort1(x, 10);break;
case 2:sort2(x, 10);break;
case 3:sort3(x, 10);break;
}
write_data(x, 10);
return 0;
}
void read_data(int e[], int p)
{
int i;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&x[i]);
}
int sort1(int a[], int s)
{int i,j,t,k;
for(i=0;i<s-1;i++)
{
for(k=i,j=i+1;j<10;j++)
if(x[k]>x[j])
k=j;
if(i!=k)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
int sort2(int b[], int y)
{int i,j,t;
printf("\n");
for(i=0;i<y;i++)
{
t=x[i];
for(j=i-1;j>=0&&t<x[j];j--)
x[j+1]=x[j];
x[j+1]=t;
}
}
int sort3(int c[], int z)
{
int i,j,t;
for(j=0;j<z;j++)
for(i=0;i<z-1-j;i++)
if(x[i]>x[i+1])
{t=x[i];x[i]=x[i+1];x[i+1]=t;}
}
void write_data(int f[], int q)
{
int i;
printf("从小到大排列:\n ");
for(i=0;i<q;i++)
printf("%4d",x[i]);
}